GetTimeFormatEx 関数 (datetimeapi.h)

時刻を、名前で指定されたロケールの時刻文字列として書式設定します。 関数は、指定された時刻またはローカル システム時刻の書式を設定します。

メモ アプリケーションは、Windows Vista 以降でのみ実行するように設計されている場合は 、GetTimeFormat を優先してこの関数を呼び出す必要があります。

 
メモ この関数は、たとえばカスタム ロケールのためにリリース間で変更されるデータを書式設定できます。 アプリケーションでデータを永続化または送信する必要がある場合は、「 永続的なロケール データの使用」を参照してください。
 

構文

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の組み合わせを指定できます。

注意 ユーザー設定 無効になっているため、LOCALE_NOUSEROVERRIDEの使用は強くお勧めしません。
 
意味
TIME_NOMINUTESORSECONDS
分または秒は使用しないでください。
TIME_NOSECONDS
秒は使用しないでください。
TIME_NOTIMEMARKER
タイム マーカーは使用しないでください。
TIME_FORCE24HOURFORMAT
常に 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 構造体の日付メンバーを無視します。 これには、 wYearwMonthwDayOfWeekおよび 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

関連項目

GetDateFormatEx

GetLocaleInfoEx

GetTimeFormat

各国語サポート

各国語サポート関数