s.timeformat([frm] [time] [locale] [dateFlags] [timeFlags])
s - str variable.
frm - format-control string.
time - variable of type DATE, SYSTEMTIME or FILETIME, containing date and/or time.
locale - locale identifier. See table. If omitted, or 0, uses LOCALE_USER_DEFAULT. Read more later in this topic.
dateFlags - GetDateFormat flags.
timeFlags - GetTimeFormat flags.
Added in QM 2.3.1. In older QM versions can be used str.time.
The function copies frm to s, replacing parts enclosed in {} to date or time. Certain characters in enclosed parts control the date/time format. The characters must match case.
In frm can be used parts of several types:
{D} | short date, like "08/09/2009". |
{DD} | long date, like "August 9, 2009". |
{T} | time without seconds, like "15:59" or "3:59 PM". |
{TT} | time with seconds, like "15:59:30" or "3:59:30 PM". |
For custom date format can be used the following character sequences. They must be in frm parts enclosed in { }. They are the same as with GetDateFormat.
Inserts | Example | |
---|---|---|
d | Day of month as digits. | 5 |
dd | Day of month as digits with leading zero for single-digit days. | 05 |
ddd | Day of week as its abbreviated name. | Sun |
dddd | Day of week as its full name. | Sunday |
M | Month as digits. | 4 |
MM | Month as digits with leading zero for single-digit months. | 04 |
MMM | Month as its abbreviated name. | Apr |
MMMM | Month as its full name. | April |
y | Year as last two digits, but with no leading zero for years less than 10. | 9 |
yy | Year as last two digits, but with leading zero for years less than 10. | 09 |
yyyy | Full year. | 2009 |
gg | Period/era string. | A.D. |
For custom time format can be used the following character sequences. They must be in frm parts enclosed in { }. They are the same as with GetTimeFormat.
Inserts | |
---|---|
h | Hours with no leading zero for single-digit hours; 12-hour clock. |
hh | Hours with leading zero for single-digit hours; 12-hour clock. |
H | Hours with no leading zero for single-digit hours; 24-hour clock. |
HH | Hours with leading zero for single-digit hours; 24-hour clock. |
m | Minutes with no leading zero for single-digit minutes. |
mm | Minutes with leading zero for single-digit minutes. |
s | Seconds with no leading zero for single-digit seconds. |
ss | Seconds with leading zero for single-digit seconds. |
t | One character time-marker string, such as A or P. |
tt | Multicharacter time-marker string, such as AM or PM. |
This function cannot format milliseconds. For this you can use class DateTime or Windows API functions, such as GetTickCount, timeGetTime, GetLocalTime. See example.
If you have a DateTime variable, you can instead call its function ToStr or ToStrFormat (supports milliseconds etc).
By default, this function uses the date/time format and language from Control Panel -> Regional. Use locale only if you need some other language/format. A locale identifier is a number that includes primary language and sublanguage constants, like in this example:
out _s.timeformat("{DD} {TT}" 0 WINAPI.LANG_FRENCH|(WINAPI.SUBLANG_FRENCH_CANADIAN<<10))
This function does not generate errors. If some part or sequence in frm is incorrect, tries to find the nearest match (eg yyy -> yyyy), or leaves the part unchanged. If locale is unsupported, uses current locale (LOCALE_USER_DEFAULT). If replacing some enclosed part fails for other reasons, for example an incorrect argument value, the enclosed part will be empty, and the function sets _hresult to 1. Sets it to 0 if all parts were successfully replaced.
To create code for this function, you can use the Text dialog from the code toolbar.
With F string, use {{ } for date/time parts, because { } are used for variables. See example.
str s s.timeformat ;;same as s.timeformat("{D} {T}") s.timeformat("{D} {TT}") s.timeformat("Current date is {DD}") s.timeformat("Current date is {MMM dd yyyy}, {HH 'hours and' mm} minutes") s.timeformat("" 0 WINAPI.LANG_ENGLISH|WINAPI.SUBLANG_ENGLISH_US) DATE d.getclock ;;get current time d=d+1 ;;add 1 day s.timeformat("{DD} {TT}" d) SYSTEMTIME st GetLocalTime &st s.format("%02i:%02i:%02i.%03i" st.wHour st.wMinute st.wSecond st.wMilliseconds) int var=5 s.timeformat(F"{var}. {{DD}") ;;with F string use {{} for date/time parts