.
Описание структуры выглядит так:
struct tm {
int tm_sec; /* Секунды (0-59) */
int tm_min; /* Минуты (0-59) */
int tm_hour; /* Часы (0-23) */
int tm_mday; /* День месяца (1-31) */
int tm_mon; /* Месяц года (0-11) */
int tm_year; /* Год - 1900 */
int tm_wday; /* День недели (Воскресенье = 0) */
int tm_yday; /* День года (0-365) */
int tm_isdst;
};
Отличие tm_isdst от нуля указывает на то, что используется летнее время.
Внешняя переменная timezone типа long содержит разницу
в секундах между всемирным временем и местным поясным
временем. Скажем, для Восточного поясного времени EST
(см. ПРИМЕЧАНИЯ) эта разница составляет 5*60*60. Внешняя переменная daylight отлична от нуля тогда и только
тогда, когда должно осуществляться преобразование к
летнему времени в соответствии со стандартом США. Программа учитывает особенности этого преобразования в
1974, 1975 годах; при необходимости перечень таких лет
может быть расширен.
При наличии переменной окружения с именем TZ, функция
asctime использует значение этой переменной для задания
часового пояса, отличного от подразумеваемого. Значение
TZ представляет из себя трехбуквенное название местного
поясного времени (см. ПРИМЕЧАНИЯ), за которым следует
число, выражающее отставание поясного времени от гринвичского в часах и далее, возможно, следует трехбуквенное название летнего времени, действующего в данном поясе. К примеру, для Нью-Джерси следует установить значение EST5EDT. Исходя из установленного TZ можно изменить значения внешних переменных timezone и daylight, а
во внешнюю переменную
char *tzname[2] = {"EST", "EDT"};
поместить названия временных шкал. Эти изменения осуществляет функция tzset; обычно она вызывается функцией
asctime, но может быть вызвана пользователем и явно.
Следует иметь в виду, что для большинства реализаций
системный профайл /etc/profile содержит присваивание
переменной TZ [см. profile(4), timezone(4)].
СМ. ТАКЖЕ
time(2), getenv(3C), profile(4), timezone(4),
environ(5).
СЮРПРИЗЫ
Значения, возвращаемые описанными функциями, указывают
на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова.
ПРИМЕЧАНИЯ
Всемирным временем называют поясное время 0-го часового
пояса, которое представляет из себя местное среднее
солнечное время гринвичского меридиана; обозначается
GMT (Greenwich Mean Time).
Московское время опережает всемирное на 3 часа.(Это так
называемое декретное московское время - не путать с поясным!)
Поясное время Москвы, лежащей во 2-м часовом поясе,
опережает всемирное на 2 часа.
Московское летнее время опережает всемирное на 4 часа.
Основная территория США покрывается 4-мя часовыми поясами, то есть 16-м, 17-м, 18-м, 19-м, носящими соответственно специальные названия: Pacific (Тихоокеанский), Mountain (Горный), Central (Центральный), Eastern
(Восточный). В них действует соответствующее поясное
(Standard) и во всех штатах основной территории, за
исключением Аризоны, летнее (Daylight [Saving]) время
(Time). Отсюда сокращенные названия: PST, MST, CST,
EST, а также PDT, MDT, CDT, EDT.