_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. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.