_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 errnoEINVAL に設定します 変更されない

実行時に明示的に更新されない限り、 "PST" 標準タイム ゾーンと "PDT" 夏時間標準タイム ゾーンに対して返されます。 詳細については、「解説」を参照してください。

タイム ゾーン文字列は、OS リリース間で同じであるとは限りません。 公式のタイム ゾーン名は変更できます。

戻り値

正常に終了した場合は 0 を返し、それ以外の場合は errno タイプの値を返します。

いずれかtimeZoneNameNULLsizeInBytes 0 または 0 より小さい (両方ではない) 場合は、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は errnoEINVAL に設定し、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に取得します。 sizeInBytesNULL 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