It seems there is a bug that happens on iOS when the phone is set to 24-hour mode. It seems to ignore the TimeFormat when you try to get the time string from the ticks value.
B4X:
DateTime.TimeFormat="HH:mm"
Dim TimeVal=DateTime.DateTimeParse(DateTime.Date(DateTime.Now),"07:00") As Long
DateTime.TimeFormat="hh:mm a"
Log("Converted time = "&DateTime.Time(TimeVal))
Here is the log output:
Converted time = 07:00
Turn off 24-hour mode on the phone and you get:
Converted time = 07:00 AM
I think the result should be the same regardless of the time mode the phone is in. Am I missing something or is this a bug?
It is fixed for the next update. The locale of the internal date and time formatters will be explicitly set to en_US_POSIX.
As a workaround call this sub when the program starts and pass "en_US_POSIX":
B4X:
Sub SetDateTimeLocale (locale As String)
Dim loc As NativeObject
loc = loc.Initialize("NSLocale").RunMethod("localeWithLocaleIdentifier:", Array(locale))
Dim no As NativeObject = DateTime
no.GetField("dateFormat").SetField("locale", loc)
no.GetField("timeFormat").SetField("locale", loc)
End Sub