_tzset

時間環境変数を設定します。

重要

この API は、Windows ランタイムで実行するアプリケーションでは使用できません。 詳細については、「ユニバーサル Windows プラットフォーム アプリでサポートされていない CRT 関数」を参照してください。

構文

void _tzset( void );

解説

_tzset 関数は環境変数 TZ の現在の設定を使用して、 _daylight_timezone、および _tznameの 3 つのグローバル変数に値を代入します。 これらの変数は、協定世界時 (UTC) から現地時刻への修正を行うために _ftime 関数と localtime 関数によって使用され、システム時刻から UTC を計算する time 関数によって使用されます。 TZ 環境変数を設定するには、次の構文を使用します。

set TZ=tzn [+|-]hh[:mm[:ss] ][dzn]

tzn
PST など、3 文字のタイム ゾーンの名前。 現地時刻から UTC への適切なオフセットを指定する必要があります。

hh
UTC と現地時刻の時差。 正の値のための符号 (+) オプション。

mm
分。 コロン ( hh ) で:との間を区切ります。

ss
秒。 コロン ( mm ) で:との間を区切ります。

dzn
PDT など、3 文字の夏時間のタイム ゾーン。 その地域で夏時間が実施されていない場合は、 TZ の値を指定しないで dznを設定します。 C ランタイム ライブラリでは、アメリカ合衆国の規則を前提に夏時間 (DST) を計算します。

Note

計算時には時差の符号に注意してください。 時差は現地時刻から UTC に変換する場合のオフセットである (逆ではない) であるため、符号は直感的に考えるものとは逆である場合があります。 UTC より早いタイム ゾーンの場合、時差は負になります。UTC より遅い場合、時差は正になります。

たとえば、 TZ 環境変数をドイツの現在のタイム ゾーンに対応するように設定するには、コマンド ラインで次のコマンドを入力します。

set TZ=GST-1GDT

このコマンドは、GST を使用してドイツ標準時を示します。 これは、UTC がドイツより 1 時間遅れている (つまり、ドイツが UTC より 1 時間早い) ことを前提としています。 そして、ドイツは夏時間を観察することを前提としています。

TZ値が設定されていない場合、_tzsetはオペレーティング システムで指定されたタイム ゾーン情報の使用を試みます。 Windows オペレーティング システムの場合、この情報は [コントロール パネル] の [日付/時刻] で指定します。 この情報 _tzset 取得できない場合は、既定でPST8PDTが使用されます。これは太平洋タイム ゾーンを示します。

TZ が呼び出されると、 _daylightの環境変数の値に基づいて、次の値がグローバル変数 _timezone_tzname 、および _tzset に代入されます。

グローバル変数 説明 規定値
_daylight 夏時間のタイム ゾーンが TZ の設定で指定されている場合は 0 以外の値、指定されていない場合は 0。 1
_timezone 現地時刻と UTC の秒単位での時差。 28800 (28,800 秒は 8 時間)
_tzname[0] 環境変数からのタイム ゾーン名の文字列値 TZTZ が設定されていない場合は空です。 PST
_tzname[1] 夏時間のタイム ゾーンの文字列値。 TZ の環境変数の値に夏時間のタイム ゾーンが含まれていない場合は空。 PDT

_daylight_tzname配列の前の表に示した既定値は、"PST8PDT" に対応しています。DST ゾーンをTZ環境変数から省略すると、_daylightの値は 0 になり、_ftimegmtimelocaltime関数は DST フラグに対して 0 を返します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。

要件

ルーチンによって返される値 必須ヘッダー
_tzset <time.h>

_tzset関数は Microsoft 固有です。 詳細については、「互換性」をご覧ください。

// crt_tzset.cpp
// This program uses _tzset to set the global variables
// named _daylight, _timezone, and _tzname. Since TZ is
// not being explicitly set, it uses the system time.

#include <time.h>
#include <stdlib.h>
#include <stdio.h>

int main( void )
{
    _tzset();
    int daylight;
    _get_daylight( &daylight );
    printf( "_daylight = %d\n", daylight );
    long timezone;
    _get_timezone( &timezone );
    printf( "_timezone = %ld\n", timezone );
    size_t s;
    char tzname[100];
    _get_tzname( &s, tzname, sizeof(tzname), 0 );
    printf( "_tzname[0] = %s\n", tzname );
    exit( 0 );
}
_daylight = 1
_timezone = 28800
_tzname[0] = Pacific Standard Time

関連項目

時間管理
asctime, _wasctime
_ftime_ftime32_ftime64
gmtime_gmtime32_gmtime64
localtime_localtime32_localtime64
time_time32_time64
_utime_utime32_utime64_wutime_wutime32_wutime64