">
НАЗВАНИЕ
ctime, localtime, gmtime, asctime, cftime, ascftime,
tzset - преобразование даты и времени в цепочку символов
СИНТАКСИС
#include <sys/types.h> #include <time.h> char *ctime (clock) time_t *clock; struct tm *localtime (clock) time_t *clock; struct tm *gmtime (clock) time_t *clock; char *asctime (tm) struct tm *tm; extern long timezone; extern int daylight; extern char *tzname[2]; void tzset ( )
ОПИСАНИЕ Функции localtime и gmtime возвращают указатели на
"tm"-структуры, описанные ниже. Localtime вносит поправку на часовой пояс и, возможно, на летнее время;
gmtime осуществляет преобразование непосредственно ко
всемирному времени, используемому в системе UNIX.
Функция asctime преобразует "tm"-структуру в цепочку из
26 символов (подобную приведенной выше) и возвращает
указатель на эту цепочку.
Об явления всех функций, внешних об ектов, а также
"tm"-структуры содержатся во включаемом файле Отличие tm_isdst от нуля указывает на то, что используется летнее время.
Внешняя переменная timezone типа long содержит разницу
в секундах между всемирным временем и местным поясным
временем. Скажем, для Восточного поясного времени EST
(см. ПРИМЕЧАНИЯ) эта разница составляет 5*60*60. Внешняя переменная daylight отлична от нуля тогда и только
тогда, когда должно осуществляться преобразование к
летнему времени в соответствии со стандартом США. Программа учитывает особенности этого преобразования в
1974, 1975 годах; при необходимости перечень таких лет
может быть расширен.
При наличии переменной окружения с именем TZ, функция
asctime использует значение этой переменной для задания
часового пояса, отличного от подразумеваемого. Значение
TZ представляет из себя трехбуквенное название местного
поясного времени (см. ПРИМЕЧАНИЯ), за которым следует
число, выражающее отставание поясного времени от гринвичского в часах и далее, возможно, следует трехбуквенное название летнего времени, действующего в данном поясе. К примеру, для Нью-Джерси следует установить значение EST5EDT. Исходя из установленного TZ можно изменить значения внешних переменных timezone и daylight, а
во внешнюю переменную
поместить названия временных шкал. Эти изменения осуществляет функция tzset; обычно она вызывается функцией
asctime, но может быть вызвана пользователем и явно.
Следует иметь в виду, что для большинства реализаций
системный профайл /etc/profile содержит присваивание
переменной TZ [см. profile(4), timezone(4)].
СМ. ТАКЖЕ СЮРПРИЗЫ ПРИМЕЧАНИЯ Московское время опережает всемирное на 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.
Аргументом функций ctime, localtime и gmtime служит
указатель clock на значение типа time_t, описанного во
включаемом файле
Sun Jan 16 01:03:52 1987\n\0
где все поля имеют постоянную длину.
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;
};
char *tzname[2] = {"EST", "EDT"};
time(2), getenv(3C), profile(4), timezone(4),
environ(5).
Значения, возвращаемые описанными функциями, указывают
на один и тот же статический массив, содержимое которого полностью изменяется после каждого вызова.
Всемирным временем называют поясное время 0-го часового
пояса, которое представляет из себя местное среднее
солнечное время гринвичского меридиана; обозначается
GMT (Greenwich Mean Time).