#include <time.h> void tzset (void); extern char *tzname[2] extern char *tzname[2]; extern long timezone; extern int daylight;
Если переменной TZ не существует в окружении, то переменная tzname инициализируется как наиболее приближенная к местному времени, что определено в файле формата tzfile(5) localtime . Данный файл находится в каталоге системных временных зон (см. ниже). Чаще всего файл /etc/localtime является ссылкой на подходящий файл временной зоны.
Если переменная TZ существует в окружении, но равна NULL или ее величина не может быть представлена ни в одном из перечисленных ниже форматах, то используется UTC (Coordinated Universal Time).
Величина TZ может быть представлена в одном из трех форматов. Первый формат используется, если в локальной временной зоне не существует установки перехода на летнее время:
Строка std определяет название временной зоны и может содержать три или более символа алфавита. Строка offset, следующая непосредственно за std, обозначает время, которое необходимо добавить к локальному, чтобы получить UTC. Величина offset положительна, если локальная временная зона находится западнее нулевого меридиана, и отрицательна, если восточнее. Количество часов колеблется от нуля до 24-х, а минут и секунд - от нуля до 59-и.
Второй формат используется, когда необходим учет перехода на летнее время:
В спецификации не должно быть пробелов. Начальное значение std и offset определяет стандартную временную зону, как описано выше. Строка dst и offset определяет зону и смещение временной зоны при переходе на летнее время. Если offset опущен, то по умолчанию используется значение на час больше зимнего времени.
Поле start определяет, когда начинает действие период летнего времени, а поле end определяет момент окончания этого периода. Эти поля могут быть представлены в следующих форматах:
Третий формат определяет, что информация о временной зоне должна быть получена из файла
Если спецификация файла filespec опущена, то информация о временной зоне будет получена из файла localtime каталога системных временных зон, который в настоящее время обычно расположен в /usr/share/zoneinfo. Это файл формата tzfile(5). Если filespec указан, он определяет другой файл формата tzfile(5), из которого будет получена информация о временной зоне. Если filespec не начинается с символа `/', то этот файл находится внутри каталога системных временных зон.
Этот каталог временных зон содержит файлы:
localtime файл локальной временной зоны posixrules правила для TZ, описанные POSIX
Чаще всего /etc/localtime - это символьная ссылка на файл localtime или на корректный файл временной зоны.
В BSD4.3 имелась функция char *timezone(zone,dst), которая возвращала имя временной зоны, соответствующей первому аргументу (минуты западнее GMT). Если второй аргумент не равнялся 0, то использовалось стандартное имя, иначе использовалось версия "летнего" времени.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |