_tzset

设置时间环境变量

重要

此 API 不能用于在 Windows 运行时中执行的应用程序。有关详细信息,请参见 CRT functions not supported with /ZW(CRT 函数不支持使用/ZW)。

void _tzset( void );

备注

_tzset 函数使用当前设置环境变量 TZ 分配值到三个全局变量:_daylight、_timezone和 _tzname。 _ftimelocaltime函数使用这些变量将世界调整时间(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的时区,时差是正的。

例如,设置 TZ 环境变量对应于德国的当前时区,输入以下命令行:

set TZ=GST-1GDT

此命令使用 GST 指示德国标准时间,假定UTC 比德国晚一小时 (换言之,德国比 UTC早一小时),并假定德国遵循夏令时。

如果 TZ 值未设置,_tzset 尝试使用操作系统指定的时区信息。 在 windows 操作系统中,此信息在"控制面板"中的日期/时间应用程序中指定。 如果 _tzset 无法获取此信息,默认情况下它使用 PST8PDT(表示太平洋时区)。

当 _tzset 调用时,根据 TZ 环境变量的值,下面的值赋给全局变量 _daylight、_timezone和 _tzname :

全局变量

描述

默认值

_daylight

非零值,如果夏令时在 TZ 指定设置;否则为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 函数返回 0(用于DST 标志)。

要求

例程

必需的标头

_tzset

<time.h>

有关更多信息,请参见Compatibility

示例

// 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