_tzset
Задает переменные среды, относящиеся ко времени.
Внимание
Этот API нельзя использовать в приложениях, выполняемых в среде выполнения Windows. Дополнительные сведения: Функции CRT, которые не поддерживаются в приложениях универсальной платформы Windows.
Синтаксис
void _tzset( void );
Замечания
Функция _tzset
использует текущую настройку переменной среды TZ
для присвоения значения трем глобальным переменным: _daylight
, _timezone
и _tzname
. Эти переменные используются _ftime
localtime
функциями для внесения исправлений из координированного универсального времени (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 по умолчанию, что означает тихоокеанский часовой пояс.
На основе значения переменной среды TZ
при вызове функции _daylight
глобальным переменным _timezone
, _tzname
и _tzset
присваиваются следующие значения:
Глобальная переменная | Description | Default value |
---|---|---|
_daylight |
Ненулевое значение, если в параметре TZ задан часовой пояс с переходом на летнее время; в противном случае — значение 0. |
1 |
_timezone |
Разница в секундах между местным временем и временем в формате UTC. | 28800 (28 800 секунд равно 8 часам) |
_tzname[0] |
Строковое значение имени часового пояса из TZ переменной среды; пустое значение, если TZ оно не задано. |
PST |
_tzname[1] |
Строковое значение часового пояса с переходом на летнее время; пусто, если часовой пояс с переходом на летнее время опущен в переменной среды TZ . |
Дневное тихоокеанское время (PDT) |
Значения по умолчанию, отображаемые в предыдущей таблице, _daylight
и _tzname
массив соответствует "PST8PDT". Если зона DST опущена из переменной TZ
среды, значение _daylight
равно 0, а _ftime
gmtime
localtime
функции возвращают 0 для флагов DST.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Маршрут | Обязательный заголовок |
---|---|
_tzset |
<time.h> |
Эта _tzset
функция зависит от Майкрософт. Дополнительные сведения см. в разделе Совместимость.
Пример
// 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
_wutime
_utime64
_wutime32
,_wutime64