НАЗВАНИЕ¶
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>.