_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) 計算の実装については米国の規則を前提としています。
メモ : |
---|
時差の符号を計算する際は、注意が必要です。ここでの時差は、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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。