#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-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |