TZFILE(5) | Руководство программиста Linux | TZFILE(5) |
ИМЯ¶
tzfile - информация о часовом поясе
ОПИСАНИЕ¶
Файлы с информацией о часовых поясах, используемые tzset(3), обычно, находятся в каталоге /usr/share/zoneinfo. Они начинаются с 44-байтного заголовка, содержащего следующие поля:
- Информационная (magic) четырехбайтовая последовательность ASCII “TZif” , означающая, что это файл с информацией о часовом поясе.
- Байт с версией формата файла (например 2017, ASCII NUL или “2”, или “3”).
- Пятнадцать байт, заполненных нулями, зарезервированы для использования в будущем.
- Шесть четырехбайтовых целых значений, записанных в стандартном порядке байт (старший байт значения записывается первым). Значения по порядку:
- tzh_ttisgmtcnt
- Количество UT/локальных (local) индикаторов в файле.
- tzh_ttisstdcnt
- Количество стандартных/местных (wall) индикаторов в файле.
- tzh_leapcnt
- Количество високосных секунд, для которых в файле определены элементы данных.
- tzh_timecnt
- Количество моментов перевода часов, для которых в файле определены элементы данных.
- tzh_typecnt
- Количество типов локального времени, для которых в файле определены элементы данных (не должно быть равно 0).
- tzh_charcnt
- Количество байт строк аббревиатур часовых поясов, определённых в файле.
После заголовка, описанного выше, располагаются поля, длина которых зависит от содержимого заголовка:
- Четырёхбайтовые знаковые целые tzh_timecnt, сортируются в порядке возрастания. Эти значения записываются в стандартном порядке байт. Каждое значение используется как момент перевода часов (возвращаемый time(2)), по правилам которого вычисляется изменение локального времени.
- tzh_timecnt one-byte unsigned integer values; each one tells which of the different types of local time types described in the file is associated with the time period starting with the same-indexed transition time. These values serve as indices into the next field.
- Элементы tzh_typecnt ttinfo определены следующим образом:
struct ttinfo {
int32_t tt_gmtoff;
unsigned char tt_isdst;
unsigned char tt_abbrind; };
Каждая структура состоит из четырехбайтного знакового числа tt_gmtoff, записанного в стандартном порядке байт; за ним следует однобайтное значение tt_isdst и однобайтное значение tt_abbrind. В каждой структуре tt_gmtoff означает, сколько секунд надо добавить к UT; tt_isdst определяет, будет ли tm_isdst устанавливаться localtime(3), а tt_abbrind является индексом массива аббревиатур байт часовых поясов, за которым в файле следуют структуры ttinfo.
- Пары четырехбайтных значений tzh_leapcnt, записанные в стандартном порядке байт; первое значение каждой пары задает неотрицательное время (возвращаемое time(2)) появления високосной секунды; вторая пара определяет общее количество високосных секунд, добавляемых во время периода времени, начинающегося в указанное время. Пары значений располагаются в порядке возрастания времени. Каждым переходом считается одна високосная секунда, положительная или отрицательная; переходы всегда отстают друг от друга на не менее чем 28 дней минус 1 секунда.
- Индикаторы стандартного/местного времени tzh_ttisstdcnt, хранимые в виде однобайтовых значений; эти индикаторы определяют, как связаны моменты перевода часов с локальными типами времени: согласно стандартному или местному времени. Эти индикаторы используются, когда файл с информацией о часовых поясах работает с POSIX-совместимыми переменными окружения часовых поясов.
- UT/локальные индикаторы tzh_ttisgmtcnt, хранимые в виде однобайтовых значений; эти индикаторы определяют, как связаны моменты перевода часов с локальными типами времени: согласно UT или локальному времени. Эти индикаторы используются, когда файл с информацией о часовых поясах работает с POSIX-совместимыми переменными окружения часовых поясов.
Функция localtime(3) использует первую структуру стандартного времени ttinfo из этого файла (или просто первую структуру ttinfo при отсутствии структуры стандартного времени), если значение tzh_timecnt равно нулю или аргумент времени меньше первого момента перевода часов, записанного в файле.
Формат версии 2¶
For version-2-format timezone files, the above header and data are followed by a second header and data, identical in format except that eight bytes are used for each transition time or leap second time. (Leap second counts remain four bytes.) After the second header and data comes a newline-enclosed, POSIX-TZ-environment-variable-style string for use in handling instants after the last transition time stored in the file (with nothing between the newlines if there is no POSIX representation for such instants). The POSIX-style string must agree with the local time type after both data's last transition times; for example, given the string “WET0WEST,M3.5.0,M10.5.0/3” то, если последний перевод времени был в июле, тип перевода локального времени должен задаваться сокращением для времени перевода на зимнее время “WEST” that is one hour east of UT.
Формат версии 3¶
В формате файлов часовых поясов версии 3 в строке в стиле POSIX-TZ можно использовать два небольших расширения формата POSIX TZ, это описывается в newtzset(3). Во-первых, часовая часть времён перевода может быть знаковой и имеет диапазон с -167 по 167, и не соответствовать беззнаковому значению POSIX от 0 до 24. Во-вторых, DST действует на весь год, если он начинается с 1 января 00:00 и заканчивается 31 декабря в 24:00 плюс разница между зимним и обычным временем.
В будущих изменениях формата могут появиться дополнительные данные.
СМ. ТАКЖЕ¶
time(2), localtime(3), tzset(3), tzselect(8), zdump(8), zic(8)
ЗАМЕЧАНИЯ¶
Эта страница является частью проекта Linux man-pages версии 4.16. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.
ПЕРЕВОД¶
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
4 августа 2017 г. |