Как именно используется база данных tzdata?

10

Похоже, что разные операционные системы по-разному работают в летнее время. Мне очень нравится подход Cisco IOS, который очень прост и позволяет изменить дату и время начала и окончания летнего времени. Например:

clock summer-time EDT recurring 2 Sun Mar 2:00 1 Sun Nov 2:00 60

.. устанавливает часы на 60 минут вперед в воскресенье второй недели марта в 2:00 и переводит часы на 60 минут назад в первое воскресенье ноября в 2:00. Как Linux обрабатывает DST? Я знаю, что есть tzdataпакет, который содержит файлы данных часового пояса, и эти файлы установлены в /usr/share/zoneinfo/каталог. Как и какими утилитами используются эти файлы? Я вижу сдвиг от UTC (2) и названия часовых поясов (EET и EEST) в файле:

T60:~# strings /usr/share/zoneinfo/posix/Europe/Helsinki
TZif2
    HMT
EEST
TZif2
EEST
EET-2EEST,M3.5.0/3,M10.5.0/4
T60:~# 

Кроме того, M3вероятно, третий месяц и M10десятый месяц? Кроме того, где-то также должно быть указано смещение. Например, в IOS можно настроить так, чтобы при наступлении летнего времени часы переключались, например, на 90 или 120 минут вместо 60.

Мартин
источник

Ответы:

4

Если вы посмотрите на страницу Википедии о базе данных TZ :

выдержка

Форматы файлов

База данных tz публикуется в виде набора текстовых файлов, в которых перечислены правила и переходы зон в удобочитаемом формате. Для использования эти текстовые файлы скомпилированы в набор независимых от платформы двоичных файлов - по одному на часовой пояс. Ссылочный исходный код включает в себя такой компилятор, который называется zic (компилятор информации о зоне), а также код для чтения этих файлов и использования их в стандартных API, таких как localtime () и mktime ().

При дополнительном поиске были обнаружены вопросы и ответы по stackoverflow под названием: Вопрос о формате файла базы данных часовых поясов , в котором содержалась дополнительная информация о формате файла.

SLM
источник