時刻のフォーマット <TOP>
SYSTEMTIMEで取得した時刻を地域の時刻にフォーマットします。
GetThreadLocale スレッドのロケールIDを取得
SetThreadLocale スレッドのロケールIDを設定
GetLocalTime ローカルタイムを取得
GetTimeFormat 時刻をフォーマットし、指定された地域に対応する時刻文字列を作成
GetTimeFormat
Ret = Api_GetTimeFormat(0, 0, ST, "hh:mm:ss JST", fTime, Len(fTime))
h 12時間制。先頭に「0」が付かない
hh 12時間制。必要に応じ先頭に「0」が付く
H 24時間制。先頭に「0」が付かない
HH 24時間制。必要に応じ先頭に「0」が付く
m 分。先頭に「0」が付かない
mm 分。必要に応じ先頭に「0」が付く
s 秒。先頭に「0」が付かない
ss 秒。必要に応じ先頭に「0」が付く
t 時刻マーカー。「A」「P」
tt 時刻マーカー。「AM」「PM」「午前」「午後」
参照
'================================================================ '= 時刻のフォーマット '= (GetTimeFormat.bas) '================================================================ #include "Windows.bi" #define LOCALE_SYSTEM_DEFAULT &H400 'システムのデフォルトロケール #define LOCALE_USER_DEFAULT &H800 '現在のユーザのデフォルトロケール #define LOCALE_NOUSEROVERRIDE -2147483648'システムの既定の設定 #define LOCALE_USE_CP_ACP &H40000000 'ロケールのコードページの代わりに、システムのANSIコードページを使う #define TIME_NOMINUTESORSECONDS &H1 '分と秒を使わない #define TIME_NOSECONDS &H2 '秒を使わない #define TIME_NOTIMEMARKER &H4 '時刻マーカーを使わない(AM/PM) #define TIME_FORCE24HOURFORMAT &H8 '24時間制で表記 Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type ' 時刻をフォーマットし、指定された地域に対応する時刻文字列を作成 Declare Function Api_GetTimeFormat& Lib "kernel32" Alias "GetTimeFormatA" (ByVal Locale&, ByVal dwFlags&, lpTime As SYSTEMTIME, ByVal lpFormat As Any, ByVal lpTimeStr$, ByVal cchTime&) ' 呼び出し側スレッドの現在のロケールを取得 Declare Function Api_GetThreadLocale& Lib "Kernel32" Alias "GetThreadLocale" () ' 呼び出し側スレッドの現在のロケールを設定 Declare Function Api_SetThreadLocale& Lib "kernel32" Alias "SetThreadLocale" (ByVal Locale&) ' ローカルタイムを取得 Declare Sub Api_GetLocalTime Lib "Kernel32" Alias "GetLocalTime" (lpSytemTime As SYSTEMTIME) Var Shared Text(7) As Object Var Shared Timer1 As Object For i = 0 To 7 Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) : Text(I).SetFontSize 14 Next Timer1.Attach GetDlgItem("Timer1") '================================================================ '= '================================================================ Declare Sub Timer1_Timer edecl () Sub Timer1_Timer() Var st As SYSTEMTIME Var fTime As String * 256 Var Ret As Long If Api_GetThreadLocale <> LOCALE_SYSTEM_DEFAULT Then Ret = Api_SetThreadLocale(LOCALE_SYSTEM_DEFAULT) End If Api_GetLocalTime st Ret = Api_GetTimeFormat(0, 0, st, "th:m:s", fTime, Len(fTime)) Text(4).SetWindowText Left$(fTime, Ret) Ret = Api_GetTimeFormat(0, 0, st, "tthh:mm:ss", fTime, Len(fTime)) Text(5).SetWindowText Left$(fTime, Ret) Ret = Api_GetTimeFormat(0, 0, st, "hh:mm:ss", fTime, Len(fTime)) Text(6).SetWindowText Left$(fTime, Ret) Ret = Api_GetTimeFormat(0, 0, st, "HH:mm:ss", fTime, Len(fTime)) Text(7).SetWindowText Left$(fTime, Ret) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End