GetTimeFormatEx 関数 (datetimeapi.h)
時刻を、名前で指定されたロケールの時刻文字列として書式設定します。 関数は、指定された時刻またはローカル システム時刻の書式を設定します。
構文
int GetTimeFormatEx(
[in, optional] LPCWSTR lpLocaleName,
[in] DWORD dwFlags,
[in, optional] const SYSTEMTIME *lpTime,
[in, optional] LPCWSTR lpFormat,
[out, optional] LPWSTR lpTimeStr,
[in] int cchTime
);
パラメーター
[in, optional] lpLocaleName
ロケール名へのポインター、または次の定義済みの値のいずれか。
[in] dwFlags
時刻形式オプションを指定するフラグ。 アプリケーションでは、次の値と LOCALE_USE_CP_ACP または LOCALE_NOUSEROVERRIDEの組み合わせを指定できます。
値 | 意味 |
---|---|
|
分または秒は使用しないでください。 |
|
秒は使用しないでください。 |
|
タイム マーカーは使用しないでください。 |
|
常に 24 時間形式を使用します。 |
[in, optional] lpTime
書式設定する時刻情報を含む SYSTEMTIME 構造体へのポインター。 関数が現在のローカル システム時刻を使用する場合、アプリケーションはこのパラメーターを NULL に設定できます。
[in, optional] lpFormat
時刻文字列の書式設定に使用する書式図へのポインター。 アプリケーションでこのパラメーターを NULL に設定した場合、関数は指定されたロケールの時刻形式に従って文字列の書式を設定します。 アプリケーションで パラメーターが NULL に設定されていない場合、関数は、ロケール固有のタイム マーカーなど、書式指定図文字列で指定されていない情報に対してのみロケールを使用します。 図の書式指定文字列の詳細については、「解説」セクションを参照してください。
[out, optional] lpTimeStr
この関数が書式設定された時刻文字列を取得するバッファーへのポインター。
[in] cchTime
lpTimeStr で示される時間文字列バッファーのサイズ (文字単位)。 または、アプリケーションでこのパラメーターを 0 に設定することもできます。 この場合、関数は時刻文字列バッファーに必要なサイズを返し、 lpTimeStr パラメーターは使用しません。
戻り値
lpTimeStr で示されるバッファー内で取得された文字数を返します。 cchTime パラメーターが 0 に設定されている場合、関数は、書式設定された時刻文字列を保持するために必要なバッファーのサイズ (終端の null 文字を含む) を返します。
成功しなかった場合、この関数は 0 を返します。 拡張エラー情報を取得するために、アプリケーションは GetLastError を呼び出すことができます。これにより、次のいずれかのエラー コードが返されます。
- ERROR_INSUFFICIENT_BUFFER。 指定されたバッファー サイズが十分に大きくなかったか、 正しく NULL に設定されていませんでした。
- ERROR_INVALID_FLAGS。 フラグに指定された値が無効でした。
- ERROR_INVALID_PARAMETER。 パラメーター値のいずれかが無効です。
- ERROR_OUTOFMEMORY。 この操作を完了するのに十分なストレージが使用できませんでした。
注釈
時間マーカーが存在し、TIME_NOTIMEMARKER フラグが設定されていない場合、関数は指定されたロケール識別子に基づいてタイム マーカーをローカライズします。 タイム マーカーの例としては、英語 (米国) の "AM" と "PM" があります。
lpTime で示される構造体の時刻値は有効である必要があります。 関数は、各時間値をチェックして、値の適切な範囲内にあるかどうかを判断します。 いずれかの時刻値が正しい範囲外の場合、関数は失敗し、最後のエラーをERROR_INVALID_PARAMETERに設定します。
関数は 、SYSTEMTIME 構造体の日付メンバーを無視します。 これには、 wYear、 wMonth、 wDayOfWeek、 および wDay が含まれます。
TIME_NOMINUTESORSECONDSまたはTIME_NOSECONDSが指定されている場合、関数は分または秒のメンバーの後の区切り記号を削除します。
TIME_NOTIMEMARKERを指定すると、時間マーカーの前と後の区切り記号が削除されます。
TIME_FORCE24HOURFORMATを指定すると、TIME_NOTIMEMARKER フラグも設定されていない限り、既存のタイム マーカーが表示されます。
関数には、書式設定された時刻文字列の一部としてミリ秒は含まれません。
関数は不適切な書式指定文字列のエラーを返しませんが、可能な限り最適な時刻文字列を形成するだけです。 2 時間以上の時間、分、秒、または時間マーカー形式の画像が渡される場合、関数の既定値は 2 になります。 たとえば、有効なタイム マーカー画像は"t" と "tt" だけです。 "ttt" が渡された場合、関数は "tt" を想定します。
実際の書式を実行せずに時刻形式を取得するには、アプリケーションで GetLocaleInfoEx 関数を使用し、 LOCALE_STIMEFORMATを指定する必要があります。
アプリケーションでは、次の要素を使用して、書式指定の図の文字列を作成できます。 書式指定文字列内の要素を区切るためにスペースを使用する場合、これらのスペースは出力文字列内の同じ場所に表示されます。 文字は、"SS" ではなく "ss" のように大文字または小文字にする必要があります。 単一引用符で囲まれた書式指定文字列内の文字は、同じ場所に表示され、出力文字列では変更されません。
Picture | 意味 |
---|---|
h | 1 桁の時間の先頭に 0 がない時間。12 時間制 |
hh | 1 桁の時間の先頭に 0 を付けた時間。12 時間制 |
H | 1 桁の時間の先頭に 0 がない時間。24 時間制 |
HH | 1 桁の時間の先頭に 0 を付けた時間。24 時間制 |
m | 1 桁の分の先頭に 0 がない分 |
mm | 1 桁の分の先頭に 0 を付けた分数 |
s | 1 桁の秒の前に 0 がない秒数 |
ss | 1 桁の秒の前に 0 を付けた秒数 |
t | A や P などの 1 つの文字時間マーカー文字列 |
tt | AM や PM などの複数文字の時刻マーカー文字列 |
たとえば、時刻文字列を取得するには
"11:29:40 PM"
アプリケーションで画像文字列を使用する必要がある
"hh':'mm':'ss tt"
この関数は、 カスタム ロケールからデータを取得できます。 データは、コンピューター間、またはアプリケーションの実行間で同じになることは保証されません。 アプリケーションでデータを永続化または送信する必要がある場合は、「 永続的なロケール データの使用」を参照してください。
Windows 8以降: アプリが Windows.Globalization 名前空間からこの関数に言語タグを渡す場合は、最初に ResolveLocaleName を呼び出してタグを変換する必要があります。
Windows 8以降: GetTimeFormatEx は Datetimeapi.h で宣言されています。 Windows 8する前は、Winnls.h で宣言されていました。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | datetimeapi.h |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |