Share via


_tzset

設定時間環境變數。

重要

這個 API 不能用於在 Windows 執行階段中執行的應用程式。 如需詳細資訊,請參閱 CRT functions not supported in Universal Windows Platform apps (通用 Windows 平台應用程式中不支援的 CRT 函式)。

語法

void _tzset( void );

備註

_tzset 函式會使用環境變數 TZ 目前的設定,將值指派給下列三個全域變數: _daylight_timezone_tzname。 和 localtime 函式會使用這些 _ftime 變數,從國際標準時間 (UTC) 到當地時間進行更正,以及由 函 time 式從系統時間計算 UTC。 請使用下列語法來設定 TZ 環境變數:

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

tzn
三個字母的時區名稱,例如 PST (太平洋標準時間)。 您必須指定從本地時間到 UTC 的正確位移。

hh
UTC 與本地時間之間的時間差異 (小時)。 正值可選用正號 (+)。

mm
分鐘。 以冒號 ( hh ) 分隔:

ss
秒鐘。 以冒號 ( mm ) 分隔:

dzn
三個字母的日光節約時區例如 PDT。 如果日光節約時間永遠不會在該位置生效,設定 TZ 時就不需設定 dzn的值。 C 執行階段程式庫會在實作日光節約時間 (DST) 的計算時,假定使用美國的規則。

注意

要特別小心運算時間差異的正負號。 因為時間差異是從本地時間到 UTC (而不是從 UTC 到本地時間) 的位移,正負號可能與您直覺的預期相反。 早於 UTC 的時區,時間差異為負數;晚於 UTC 的時區,時間差異為正數。

例如,若要設定 TZ 環境變數以對應至德國目前的時區,請在命令列上輸入此命令:

set TZ=GST-1GDT

此命令會使用 GST 來表示德文標準時間。 它假設 UTC 比德國落後一小時(換句話說,德國比 UTC 提前一小時)。 而且,它假設德國觀察日光節約時間。

TZ如果未設定值, _tzset 會嘗試使用作業系統所指定的時區資訊。 在 Windows 作業系統中,這項資訊是在 [控制台] 的 [日期/時間] 應用程式中指定。 如果 _tzset 無法取得這項資訊,則預設會使用PST8PDT,表示太平洋時區。

根據 TZ 環境變數的值,在呼叫 _daylight時會將下列值指派給全域變數 _timezone_tzname_tzset

全域變數 描述 預設值
_daylight 如果 TZ 設定中指定日光節約時區為非零值 ;否則為 0。 1
_timezone 傳回本地時間與 UTC 之間的時差 (秒)。 28800 (28,800 秒等於 8 小時)
_tzname[0] 環境變數中時區名稱 TZ 的字串值;如果 TZ 尚未設定,則為空白。 PST
_tzname[1] 日光節約時區的字串值;如果要省略 TZ 環境變數的日光節約時區,則為空白。 PDT

上表 _daylight 所示的預設值,且 _tzname 陣列會對應至 「PST8PDT」。如果環境變數省略 TZ DST 區域,則 的值 _daylight 為 0 _ftimegmtime ,且 、 和 函 localtime 式會針對其 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