_get_tzname
タイム ゾーン名または夏時間標準時 (DST) ゾーン名の文字列形式を取得します。
構文
errno_t _get_tzname(
size_t* pReturnValue,
char* timeZoneName,
size_t sizeInBytes,
int index
);
パラメーター
pReturnValue
NULL
ターミネータを含むtimeZoneName
の文字列の長さ。
timeZoneName
index
に基づき、タイム ゾーン名または夏時間ゾーン名 (DST) の文字列のアドレス。
sizeInBytes
timeZoneName
文字列のサイズ (バイト単位)。
index
取得する 2 つのタイム ゾーン名のいずれか 1 つの index
。
index |
timeZoneName の内容 |
timeZoneName の既定値 |
---|---|---|
0 | タイム ゾーン名 | "PST" |
1 | 夏時間ゾーン名 | "PDT" |
> 1 または < 0 | errno を EINVAL に設定 |
変更されない |
実行時に明示的に更新されない限り、 "PST"
は標準タイム ゾーンに対して返され、夏時間標準タイム ゾーンの "PDT"
が返されます。 詳細については、 Remarks を参照してください。
タイム ゾーン文字列は、OS リリース間で同じであるとは限りません。 公式のタイム ゾーン名は変更できます。
戻り値
正常に終了した場合は 0 を返し、それ以外の場合は errno
タイプの値を返します。
timeZoneName
がNULL
、またはsizeInBytes
が 0 未満 (両方ではない) の場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は errno
を EINVAL
に設定し、EINVAL
を返します。
エラー条件
pReturnValue |
timeZoneName |
sizeInBytes |
index |
戻り値 | timeZoneName の内容 |
---|---|---|---|---|---|
TZ 名のサイズ | NULL |
0 | 0 または 1 | 0 | 変更されない |
TZ 名のサイズ | 任意 | > 0 | 0 または 1 | 0 | TZ 名 |
変更されない | NULL |
> 0 | 任意 | EINVAL |
変更されない |
変更されない | 任意 | ゼロ | 任意 | EINVAL |
変更されない |
変更されない | 任意 | > 0 | > 1 | EINVAL |
変更されない |
解説
_get_tzname
関数は、現在のタイム ゾーン名または夏時間標準タイム ゾーン名 (DST) の文字列表現を、pReturnValue
の文字列のサイズと共に、index
値に応じてtimeZoneName
のアドレスに取得します。 timeZoneName
がNULL
で、sizeInBytes
が 0 の場合、指定したタイム ゾーンと終了NULL
の両方を保持するために必要な文字列のサイズ (バイト単位) がpReturnValue
で返されます。
index
値は、標準タイム ゾーンの場合は 0、夏時間標準タイム ゾーンの場合は 1 である必要があります。その他の値には未確定の結果があります。
既定では、 "PST"
は標準タイム ゾーンに対して返され、夏時間標準タイム ゾーンの "PDT"
が返されます。 正しいタイム ゾーン名は、 strftime
、 ftime
、 ftime_s
、 mktime
、 localtime
などのタイム ゾーン情報を必要とする関数が初めて必要とする場合に更新されます。 タイム ゾーン情報を必要としない関数が _get_tzname
を呼び出す前に呼び出されない場合は、前述の関数のいずれかを使用して明示的に更新しない限り、または tzset
の呼び出しによって既定値が返されます。 また、 TZ
環境変数が設定されている場合は、OS によって報告されるタイム ゾーン名よりも優先されます。 この場合でも、 _get_tzname
が呼び出されるか、既定のタイム ゾーン値が返される前に、上記のいずれかの関数を呼び出す必要があります。 TZ
環境変数と CRT の詳細については、_tzset
を参照してください。
警告
タイム ゾーン文字列は、OS リリース間で同じであるとは限りません。 公式のタイム ゾーン名は変更できます。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
例
このサンプルでは、 _get_tzname
を呼び出して、現在の Daylight 標準タイム ゾーン名を表示するために必要なバッファー サイズを取得し、そのサイズのバッファーを割り当て、 _get_tzname
を再度呼び出してバッファーに名前を読み込み、コンソールに出力します。
また、_get_tzname()
を呼び出す前に OS がタイム ゾーン情報を更新するように_tzset()
も呼び出します。 それ以外の場合は、既定値が使用されます。
// crt_get_tzname.c
// Compile by using: cl /W4 crt_get_tzname.c
#include <stdio.h>
#include <time.h>
#include <malloc.h>
enum TZindex {
STD,
DST
};
int main()
{
size_t tznameSize = 0;
char * tznameBuffer = NULL;
_tzset(); // Update the time zone information
// Get the size of buffer required to hold DST time zone name
if (_get_tzname(&tznameSize, NULL, 0, DST))
{
return 1; // Return an error value if it failed
}
// Allocate a buffer for the name
if (NULL == (tznameBuffer = (char *)(malloc(tznameSize))))
{
return 2; // Return an error value if it failed
}
// Load the name in the buffer
if (_get_tzname(&tznameSize, tznameBuffer, tznameSize, DST))
{
return 3; // Return an error value if it failed
}
printf_s("The current Daylight standard time zone name is %s.\n", tznameBuffer);
return 0;
}
出力
The current Daylight standard time zone name is Pacific Daylight Time.
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_get_tzname |
<time.h> |
詳細については、「互換性」をご覧ください。
関連項目
時間管理
errno
、_doserrno
、_sys_errlist
、および _sys_nerr
_get_daylight
_get_dstbias
_get_timezone