НАЗВАНИЕ
tzfile − информация о часовом поясе
СИНТАКСИС
#include <tzfile.h>
ОПИСАНИЕ
Файлы
с
информацией
о часовых
поясах,
которые
использует
функция
tzset(3),
начинаются
с
символов
"TZif",
показывающих,
что это
файлы с
информацией
о часовых
поясах,
затем
располагаются
шестнадцать
байт,
зарезервированных
для
будущего
использования,
за ними
располагаются
шесть
четырёхбайтовых
значений
типа long,
записанных
в
’’сетевом’’
порядке
байт
(старший
байт
значения
записывается
первым).
Вот эти
значения,
по
порядку:
tzh_ttisgmtcnt
Количество индикаторов UTC и местных индикаторов, хранящихся в файле.
tzh_ttisstdcnt
Количество индикаторов "времени на часах" (wall-clock time) или стандартного времени, хранящихся в файле.
tzh_leapcnt
Количество високосных секунд, данные о которых хранятся в файле.
tzh_timecnt
Количество "моментов перевода времени", данные о которых хранятся в файле.
tzh_typecnt
Количество "типов местного времени" , данные о которых хранятся в файле ( должно быть ненулевым).
tzh_charcnt
Количество символов в "строках аббревиатур часовых поясов", хранящихся в файле.
После этого заголовка следуют tzh_timecnt, четырёхбайтовые значения типа long, отсортированные по возрастанию. Эти значения записаны в ’’сетевом’’ порядке байт. Каждое из них рассматривается как момент перевода времени (в том виде, как его возвращает функция time(2)). Далее следуют однобайтовые значения типа unsigned char в количестве tzh_timecnt, каждое из которых показывает, как различные типы ’’местного времени’’, описываемые в файле, связаны с моментами перевода времени с теми же индексами. Эти значения служат в качестве индексов массива структур ttinfo, которые располагаются далее в файле; эти структуры определены так:
struct ttinfo {
long |
tt_gmtoff; | |
int |
tt_isdst; | |
unsigned int |
tt_abbrind; |
};
Каждая структура определена в виде четырёхбайтового значения tt_gmtoff типа long в сетевом порядке байт, однобайтового значения tt_isdst и однобайтового значения tt_abbrind. В каждой структуре tt_gmtoff определяет количество секунд, которые нужно добавить к UTC, tt_isdst показывает, будет ли localtime (3) устанавливать значение tm_isdst, а tt_abbrind служит в индексом массива символов аббревиатур часовых поясов, которые располагаются в виде структур(ы) ttinfo в файле далее.
Затем следуют пары четырёхбайтовых значений tzh_leapcnt, записанных в сетевом порядке байт; первое значение каждой пары определяет время (в формате time(2)), когда встретилась високосная секунда; второе определяет общее число високосных секунд, которые нужно применить после заданного времени. Пары значений отсортированы по времени в возрастающем порядке.
Далее располагаются индикаторы стандартного времени или "времени на часах" в количестве tzh_ttisstdcnt, причем каждый занимает один байт. Они показывают, указаны ли моменты перевода времени, связанные с типами местного времени, в стандартном или "времени на часах", и применяются, когда файл часовых поясов используется при обработке переменных среды, указывающих часовые пояса в стиле POSIX.
Наконец, идут индикаторы UTC или местные индикаторы в количестве tzh_ttisgmtcnt, причем каждый занимает один байт; Они показывают, указаны ли моменты перевода времени, связанные с типами местного времени, в местном времени или в UTC, и применяются, когда файл часовых поясов используется при обработке переменных среды, указывающих часовые пояса в стиле POSIX.
Localtime использует первую структуру ttinfo со стандартным временем из файла (или просто первую структуру ttinfo при отсутствии структуры со стандартным временем), если tzh_timecnt равен нулю или аргумент времени меньше, чем первый момент перевода времени, записанный в файле.
СМОТРИ ТАКЖЕ
ПЕРЕВОД
Юрий Козлов <y_kozlov [AT] chat.ru>.