tzfile

Autres langues

Langue: ru

Autres versions - même langue

Version: 100070 (fedora - 25/11/07)

Section: 5 (Format de fichier)

НАЗВАНИЕ

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 равен нулю или аргумент времени меньше, чем первый момент перевода времени, записанный в файле.

СМОТРИ ТАКЖЕ

newctime(3)

ПЕРЕВОД

Юрий Козлов <y_kozlov@chat.ru>.