Share via


_tzset

更新 : 2007 年 11 月

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

void _tzset( void );

解説

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

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

  • tzn
    太平洋標準時 (PST: Pacific Standard Time) などの 3 文字のタイム ゾーン名。現地時刻から UTC への正しいオフセットを指定する必要があります。

  • hh
    UTC と地域時刻の時間単位での差異。正の値の場合、記号 (+) は省略可能です。

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

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

  • dzn
    太平洋夏時間 (PDT: Pacific Daylight Time) などの 3 文字の夏時間のタイム ゾーン。夏時間が使用されない地域では、dzn に値を指定せずに TZ を設定します。C ランタイム ライブラリは、夏時間 (DST: Daylight Saving Time) 計算の実装については米国の規則を前提としています。

90s5c885.alert_note(ja-jp,VS.90).gifメモ :

時差の符号を計算する際は、注意が必要です。ここでの時差は、UTC から現地時刻を差し引いた値であって、その逆ではありません。符号が逆にならないように注意してください。UTC よりも前の時間になるタイム ゾーンでは時差は負の値になります。UTC よりも遅い時間になるタイム ゾーンでは時差は正の値になります。

たとえば、ドイツの現在のタイム ゾーンに合わせて TZ 環境変数を修正するには、コマンド ラインに次のように入力します。

set TZ=GST-1GDT

このコマンドは、UTC が GST (ドイツ標準時) よりも 1 時間遅れであること (逆に、GST は 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" に対応します。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 );
}

_daylight = 1
_timezone = 28800
_tzname[0] = Pacific Standard Time

.NET Framework の相当するアイテム

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

参照

参照

時間管理

asctime、_wasctime

_ftime、_ftime32、_ftime64

gmtime、_gmtime32、_gmtime64

localtime、_localtime32、_localtime64

time、_time32、_time64

_utime、_utime32、_utime64、_wutime、_wutime32、_wutime64