_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
index
取得する 2 つのタイム ゾーン名のいずれか。
index |
timeZoneName の内容 |
timeZoneName の既定値 |
---|---|---|
0 | タイム ゾーン名 | "PST" |
1 | 夏時間ゾーン名 | "PDT" |
> 1 または < 0 | errno を EINVAL に設定します |
変更されない |
実行時に明示的に更新されない限り、 "PST"
標準タイム ゾーンと "PDT"
夏時間標準タイム ゾーンに対して返されます。 詳細については、「解説」を参照してください。
タイム ゾーン文字列は、OS リリース間で同じであるとは限りません。 公式のタイム ゾーン名は変更できます。
戻り値
正常に終了した場合は 0 を返し、それ以外の場合は errno
タイプの値を返します。
いずれかtimeZoneName
が NULL
sizeInBytes
0 または 0 より小さい (両方ではない) 場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は errno
を EINVAL
に設定し、EINVAL
を返します。
エラー条件
pReturnValue |
timeZoneName |
sizeInBytes |
index |
戻り値 | timeZoneName の内容 |
---|---|---|---|---|---|
TZ 名のサイズ | NULL |
0 | 0 または 1 | 0 | 変更されない |
TZ 名のサイズ | any | > 0 | 0 または 1 | 0 | TZ 名 |
変更されない | NULL |
> 0 | any | EINVAL |
変更されない |
変更されない | any | ゼロ | any | EINVAL |
変更されない |
変更されない | any | > 0 | > 1 | EINVAL |
変更されない |
解説
この関数は_get_tzname
、現在のタイム ゾーン名または夏時間標準タイム ゾーン名 (DST) の文字列表現を、値にindex
応じて、文字列pReturnValue
のサイズと共にアドレスtimeZoneName
に取得します。 sizeInBytes
NULL
0 の場合timeZoneName
は、指定したタイム ゾーンと終端NULL
の両方を保持するために必要な文字列のサイズ (バイト単位) pReturnValue
が返されます。
値は、標準タイム ゾーンの場合は 0、夏時間標準タイム ゾーンの場合は index
1 である必要があります。その他の値には未確定の結果が含まれます。
既定では、 "PST"
標準タイム ゾーンと "PDT"
夏時間標準タイム ゾーンに対して返されます。 正しいタイム ゾーン名は、タイム ゾーン情報を必要とする関数が初めて必要とする場合に更新されます (例: strftime
, ftime
, ftime_s
, mktime
, localtime
, など)。 タイム ゾーン情報を必要としない関数が呼び出される前に呼び出_get_tzname
されない場合は、最初にメンション関数のいずれかを使用して明示的に更新しない限り、または呼び出しtzset
によって既定値が返されます。 また、環境変数が TZ
設定されている場合は、OS によって報告されるタイム ゾーン名よりも優先されます。 この場合でも、上記でメンション関数の 1 つを呼び出す前に_get_tzname
呼び出す必要があります。または、既定のタイム ゾーン値が返されます。 環境変数と CRT の詳細 TZ
については、次を参照してください _tzset
。
警告
タイム ゾーン文字列は、OS リリース間で同じであるとは限りません。 公式のタイム ゾーン名は変更できます。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください。
例
このサンプルでは、 _get_tzname
現在の夏時間標準タイム ゾーン名を表示するために必要なバッファー サイズを取得し、そのサイズのバッファーを割り当て、再度呼び出 _get_tzname
してバッファーに名前を読み込み、コンソールに出力します。
また、OS が呼び出す _tzset()
前にタイム ゾーン情報を更新するように呼び出します _get_tzname()
。 それ以外の場合は、既定値が使用されます。
// 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
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示