Поделиться через


_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, а _ftimegmtimelocaltime функции возвращают 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