_tzset

Задает переменные среды времени.

Важно!

Этот API невозможно использовать в приложениях, запускаемых в среде выполнения Windows.Дополнительные сведения см. в статье Функции CRT, которые не поддерживаются с ключом /ZW.

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:

Глобальная переменная

Описание

Значение по умолчанию

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

Для получения дополнительной информации см. Совместимость.

Пример

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