時刻と日付の情報の取得

このトピックでは、アプリケーションで NLS 関数を使用して 時刻と日付 の情報と期間データを取得する手順について説明します。 アプリケーションでデータを永続化する必要がある場合は、「 永続的なロケール データの使用」を参照してください。

Windows Vista 以降: このトピックで説明する関数は、 カスタム ロケールからデータを取得できます。 特に、時刻と日付の形式をカスタマイズするために使用できます。 たとえば、"hhHmm'ss'' などの時刻形式を指定すると、"12H34'12'' のような時刻文字列が生成されます。

時間情報を取得する

アプリケーションは、 GetTimeFormat 関数と GetTimeFormatEx 関数を使用して、現在のロケールに適した形式でいつでも文字列 取得できます。 どちらの関数も、有効な SYSTEMTIME 構造体の各時刻値を調べて、構造体の日付部分を無視して、値の適切な範囲内にあることを確認します。 いずれかの時刻値が正しい範囲外の場合、関数はコード ERROR_INVALID_PARAMETERで失敗します。 関数は不適切な書式指定文字列に対してエラーを返しませんが、可能な限り最適な時刻文字列を形成するだけです。

Note

NLS 時間関数には、書式設定された時刻文字列の一部としてミリ秒は含まれません。

 

実際の書式設定を実行せずに時刻形式を取得するには、アプリケーションで GetLocaleInfo 関数または GetLocaleInfoEx 関数を使用し、呼び出しでLOCALE_STIMEFORMAT定数を指定します。

タイム マーカーを使用する

タイム マーカーの例としては、英語 (米国) の場合は "AM" と "PM"、スペイン語 (メキシコ) の場合は "de." と "du." があります。 GetTimeFormat または GetTimeFormatEx の呼び出しでTIME_NOTIMEMARKERが指定されている場合、この関数は、時刻マーカーの前と後の区切り記号を削除します。 時刻マーカーが存在し、呼び出しでTIME_NOTIMEMARKER フラグが設定されていない場合、関数は指定されたロケール識別子に基づいてタイム マーカーをローカライズします。

分と秒の前の区切り記号を削除する

アプリケーションは、TIME_NOMINUTESORSECONDSまたはTIME_NOSECONDSを指定して GetTimeFormat または GetTimeFormatEx を呼び出して、分または秒の要素の後の区切り記号を削除できます。

24 時間形式を使用する

アプリケーションが 24 時間形式をサポートしている場合は、GetTimeFormat または GetTimeFormatEx をTIME_FORCE24HOURFORMATで呼び出すことができます。 TIME_NOTIMEMARKER フラグが設定されていない限り、関数は既存のタイム マーカーを表示します。

日付情報を取得する

アプリケーションは、 GetDateFormat 関数と GetDateFormatEx 関数を使用して、現在のロケールに適した形式で任意の日付の文字列 取得できます。 どちらの関数も、有効な SYSTEMTIME 構造体の年、月、日、曜日の各日付値をチェックし、構造体の時刻部分を無視します。 曜日名、省略された日名、月名、および省略された月名はすべて、ロケール識別子に基づいてローカライズされます。 曜日が正しくない場合、関数は正しい値を使用し、エラーを返しません。 他の日付値のいずれかが正しい範囲外の場合、関数はコード ERROR_INVALID_PARAMETERで失敗します。 関数は不適切な書式指定文字列に対してエラーを返しませんが、可能な限り最適な日付文字列を形成するだけです。

アプリケーションで特定の予定表の日付形式が必要な場合は、適切な予定表識別子を渡して、GetCalendarInfo または GetCalendarInfoEx を使用する必要があります。 特定のカレンダーのすべての日付形式を返すには、アプリケーションで EnumCalendarInfoExEnumCalendarInfoExExEnumDateFormatsEx、または EnumDateFormatsEx を使用できます。

代替カレンダーを指定する

アプリケーションで GetDateFormat または GetDateFormatEx を呼び出し、フラグ DATE_USE_ALT_CALENDARを使用して、指定した代替カレンダーの既定の形式を使用できます。 代替カレンダーの既定の形式がない場合、関数はユーザーオーバーライドを使用します。

別の予定表の日付形式を取得するには、アプリケーションで GetLocaleInfo または GetLocaleInfoExLOCALE_IOPTIONALCALENDAR 定数と共に使用できます。

日付の種類を指定する

アプリケーションで短い日付形式を使用する場合は、 GetDateFormat または GetDateFormatEx の呼び出しでDATE_SHORTDATEを指定 します。 長い日付形式は、関数呼び出しでDATE_LONGDATEを指定することで取得できます。 どちらのフラグも指定されておらず、 lpFormatNULL に設定されている場合、関数は DATE_SHORTDATE を既定値として使用します。

既定のロケール カレンダーの短い日付形式と長い日付形式を取得するには、アプリケーションで GetLocaleInfo 関数または GetLocaleInfoEx 関数をLOCALE_SSHORTDATEまたはLOCALE_SLONGDATE定数と共に使用する必要があります。

日付書式の図を指定する

アプリケーションでは、GetDateFormat または GetDateFormatEx が日付文字列の形成に使用する日付形式の図を指定できます。 指定したロケールの日付形式が必要な場合、アプリケーションは lpFormatNULL に設定して 関数を呼び出すことができます。 パラメーターが NULL に設定されていない場合、関数は、書式指定図文字列で指定されていない情報 (ロケールの日名や月名など) に対してのみロケールを使用します。

アプリケーションは、正確な形式で残る必要がある任意のテキストを単一引用符で囲むことができます。 単一引用符をエスケープ文字として使用して、マーク自体を日付文字列に表示することもできます。 ただし、エスケープ シーケンスは 2 つの単一引用符で囲む必要があります。 たとえば、日付を "May '93" として表示する場合、書式指定文字列は "MMMM ''''yy" です。

期間情報を取得する

Windows Vista 以降:GetDurationFormat 関数と GetDurationFormatEx 関数は、カスタム ロケールを含むロケールの期間形式を取得するために使用できます。 ロケールの既定の期間形式を取得するには、アプリケーションで GetLocaleInfo 関数または GetLocaleInfoEx 関数をLOCALE_SDURATION定数と共に使用する必要があります。

各国語サポートの使用

時刻と日付

永続的なロケール データの使用