次の方法で共有


_tzset

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

重要

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

void _tzset( void );

解説

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

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

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

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

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

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

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

注意

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

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

set TZ=GST-1GDT

このコマンドは、GST によってドイツの標準時刻であることを示し、UTC がドイツの時刻よりも 1 時間遅い (またはドイツは UTC より 1 時間早い) と想定し、さらにドイツでは夏時間が採用されていると想定しています。

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

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

グローバル変数

説明

既定値

_daylight

夏時間のタイム ゾーンが TZ の設定で指定されている場合は 0 以外の値、指定されていない 0。

1

_timezone

現地時刻と UTC の秒単位での時差。

28800 (28800 秒は 8 時間に相当)

_tzname[0]

TZ の環境変数のタイム ゾーンの名前の文字列値。TZ が設定されていない場合は空。

PST

_tzname[1]

夏時間のタイム ゾーンの文字列値。TZ の環境変数の値に夏時間のタイム ゾーンが含まれていない場合は空。

PDT

上の表に示されている _daylight に対する既定値と _tzname の配列は "PST8PDT" に対応します。DST のゾーンが TZ の環境変数に含まれていない場合は、_daylight の値は 0 で、_ftime、gmtime、および localtime の各関数はそれぞれの DST フラグに対して 0 を返します。

必要条件

ルーチン

必須ヘッダー

_tzset

<time.h>

詳細については、「互換性」を参照してください。

使用例

// 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 );
}
  

同等の .NET Framework 関数

使用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

関連項目

時間管理

asctime、_wasctime

_ftime、_ftime32、_ftime64

gmtime、_gmtime32、_gmtime64

localtime、_localtime32、_localtime64

time、_time32、_time64

_utime、_utime32、_utime64、_wutime、_wutime32、_wutime64