база данных tz - tz database

База данных tz делит мир на регионы, где с 1970 года все местные часы были одинаковыми. На этой карте, составленной путем объединения базы данных издания 2017a с данными OpenStreetMap , представлены все регионы за пределами Антарктиды.

База данных tz - это совместный сборник информации о часовых поясах мира , в первую очередь предназначенный для использования с компьютерными программами и операционными системами. Пол Эггерт является его текущим редактором и сопровождающим при организационной поддержке ICANN . База данных tz также известна как tzdata , база данных zoneinfo или база данных часовых поясов IANA , а иногда и база данных Olson , ссылаясь на основателя проекта, Артура Дэвида Олсона.

Единое соглашение об именах для часовых поясов, таких как Америка / Нью-Йорк и Европа / Париж , было разработано Полом Эггертом. База данных пытается записать исторические часовые пояса и все гражданские изменения с 1970 года, эпохи времени Unix . Он также включает переходы, такие как переход на летнее время , а также записывает дополнительные секунды .

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

Структура данных

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

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

Определение часового пояса

В базе данных tz часовой пояс - это любой национальный регион, в котором все местные часы согласованы с 1970 года. Это определение касается прежде всего географических областей, в которых были согласованные местные часы. Это отличается от других определений, которые касаются постоянных смещений от нулевого меридиана . Следовательно, каждый из часовых поясов, определенных базой данных tz, может задокументировать несколько смещений от всемирного координированного времени , обычно включая как стандартное время, так и летнее время .

В текстовых файлах часовых поясов каждый часовой пояс имеет одну или несколько «строк поясов» в одном из текстовых файлов часовых поясов. Первая строка для часового пояса дает название часового пояса; любые последующие строки зоны для этого часового пояса оставляют имя пустым, указывая, что они применяются к той же зоне, что и предыдущая строка. Каждая строка зоны для зоны определяет для диапазона даты и времени смещение относительно всемирного координированного времени для стандартного времени, название набора правил, регулирующих переход на летнее время (или дефис, если стандартное время всегда применяется), формат для аббревиатуры часовых поясов и, кроме последней строки, дату и время, когда заканчивается диапазон даты и времени, определяемый этой строкой.

Правила перехода на летнее время (DST)

Правила перехода на летнее время указаны в именованных наборах правил. Каждый набор правил имеет одну или несколько строк правил в текстовых файлах часовых поясов. Строка правила содержит название набора правил, к которому он принадлежит, первый год, в котором применяется правило, последний год, в котором применяется правило (или «только», если он применяется только в течение одного года, или «максимум», если он является действующим правилом), тип года, к которому применяется правило («-», если он применяется ко всем годам в указанном диапазоне, что почти всегда так, в противном случае имя используется в качестве аргумента для сценария, который указывает, относится ли год к указанному типу), месяц, в котором правило вступает в силу, день, в который правило вступает в силу (который может быть либо конкретным днем, либо спецификацией, такой как «последнее воскресенье месяца») , время дня, в которое правило вступает в силу, количество времени, которое нужно добавить к смещению к всемирному координированному времени, когда правило действует, и букву или буквы, которые следует использовать в сокращении часового пояса (например, «S», если правило регулирует стандартное время и букву «D», если оно регулирует переход на летнее время).

Названия часовых поясов

Часовые пояса имеют уникальные имена в форме « Район / Местоположение », например «Америка / Нью-Йорк». Также был сделан выбор в пользу использования английских имен или эквивалентов и исключения знаков препинания и общих суффиксов. Символ подчеркивания используется вместо пробелов. Дефисы используются там, где они появляются в названии места. В Районе и Место имена имеют максимальную длину 14 символов.

Площадь

Площадь - это название континента , океана или «и т. Д.». В настоящее время используются континенты и океаны: Африка , Америка , Антарктида , Арктика , Азия , Атлантика , Австралия , Европа , Индия и Тихий океан .

Океаны включены, поскольку некоторые острова трудно соединить с определенным континентом. Некоторые из них географически связаны с одним континентом, а политически - с другим. См. Также Границы между континентами .

Специальная область «Etc» используется для некоторых административных зон, в частности, для «Etc / UTC», который представляет всемирное координированное время . Чтобы соответствовать стилю POSIX , имена зон, начинающиеся с «Etc / GMT», имеют обратный знак по сравнению со стандартным соглашением ISO 8601 . В области «Etc» зоны к западу от GMT имеют положительный знак, а зоны на востоке имеют отрицательный знак в своем названии (например, «Etc / GMT-14» опережает GMT на 14 часов).

Место нахождения

Местоположение - это название определенного места в пределах области - обычно города или небольшого острова.

Названия стран не используются в этой схеме, прежде всего потому, что они не будут надежными из-за частых политических изменений и изменений границ. Названия больших городов имеют тенденцию быть более постоянными. Обычно для представления всего часового пояса выбирается самый густонаселенный город в регионе, хотя может быть выбран другой город, если он более широко известен, и другое местоположение, включая местоположение, отличное от города, может использоваться, если это приводит к менее неоднозначное название. В случае, если имя местоположения, используемое для представления изменений часового пояса, соглашение заключается в создании псевдонима в будущих выпусках, чтобы и старое, и новое имена ссылались на одну и ту же запись в базе данных.

В некоторых случаях Местоположение представлено как составное имя, например часовой пояс « Америка / Индиана / Индианаполис ». Трехуровневые имена включают имена в разделах «Америка / Аргентина / ...», «Америка / Кентукки / ...», «Америка / Индиана / ...» и «Америка / Северная_Дакота / ...».

Выбранное местоположение является репрезентативным для всей территории. Однако, если до 1970 года были различия в пределах области, правила часовых поясов применяются только в названном месте.

Примеры

Америка / Коста-Рика название страны используется потому , что название самого большого города (и столица) Сан - Хосе является неоднозначным
Америка / Нью-Йорк Пробел заменен на подчеркивание
Азия / Калькутта используется название города Калькутта , потому что это был самый густонаселенный город в зоне на момент создания зоны, хотя это уже не так
Азия / Сахалин использовано название острова, поскольку самый крупный город Южно-Сахалинск состоит более чем из 14 знаков
America / Bahia_Banderas "de" удалено из Bahia de Banderas , потому что правильное имя содержит более 14 символов.
Антарктида / Дюмон-Дюрвиль апостроф удален. Пробел обычно заменяется на "_", но тогда имя превышает 14 символов.

Пример зоны и линий правил

Это строки правил для стандартных правил перехода на летнее время в США, строки правил для правил перехода на летнее время, действующих в Восточном часовом поясе США (называемом «Нью-Йорк», поскольку Нью-Йорк является городом, представляющим эту зону) в некоторые годы, и строки поясов для часового пояса America / New_York, начиная с версии tzdata2011n базы данных часовых поясов. Линии зоны и правила отражают историю перехода на летнее время в США .

# Rule  NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER/S
Rule    US      1918    1919    -       Mar     lastSun 2:00    1:00    D
Rule    US      1918    1919    -       Oct     lastSun 2:00    0       S
Rule    US      1942    only    -       Feb     9       2:00    1:00    W # War
Rule    US      1945    only    -       Aug     14      23:00u  1:00    P # Peace
Rule    US      1945    only    -       Sep     30      2:00    0       S
Rule    US      1967    2006    -       Oct     lastSun 2:00    0       S
Rule    US      1967    1973    -       Apr     lastSun 2:00    1:00    D
Rule    US      1974    only    -       Jan     6       2:00    1:00    D
Rule    US      1975    only    -       Feb     23      2:00    1:00    D
Rule    US      1976    1986    -       Apr     lastSun 2:00    1:00    D
Rule    US      1987    2006    -       Apr     Sun>=1  2:00    1:00    D
Rule    US      2007    max     -       Mar     Sun>=8  2:00    1:00    D
Rule    US      2007    max     -       Nov     Sun>=1  2:00    0       S
....
# Rule  NAME    FROM    TO      TYPE    IN      ON      AT      SAVE    LETTER
Rule    NYC     1920    only    -       Mar     lastSun 2:00    1:00    D
Rule    NYC     1920    only    -       Oct     lastSun 2:00    0       S
Rule    NYC     1921    1966    -       Apr     lastSun 2:00    1:00    D
Rule    NYC     1921    1954    -       Sep     lastSun 2:00    0       S
Rule    NYC     1955    1966    -       Oct     lastSun 2:00    0       S
# Zone  NAME            GMTOFF  RULES   FORMAT  [UNTIL]
Zone America/New_York   -4:56:02 -      LMT     1883 November 18, 12:03:58
                        -5:00   US      E%sT    1920
                        -5:00   NYC     E%sT    1942
                        -5:00   US      E%sT    1946
                        -5:00   NYC     E%sT    1967
                        -5:00   US      E%sT

Данные, хранящиеся для каждой зоны

Для каждого часового пояса, который имеет несколько смещений (обычно из-за перехода на летнее время), база данных tz записывает точный момент перехода. Формат также может учитывать изменения даты и времени переходов. Зоны могут иметь исторические изменения в правилах, происходящие много десятилетий назад (как показано в приведенном выше примере).

Zone.tab

Файл zone.tab находится в открытом доступе и содержит список зон. Столбцы и сортировка строк описаны в комментариях к файлу следующим образом:

# This file contains a table with the following columns:
# 1.  ISO 3166 2-character country code.  See the file `iso3166.tab'.
# 2.  Latitude and longitude of the zone's principal location
#     in ISO 6709 sign-degrees-minutes-seconds format,
#     either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
#     first latitude (+ is north), then longitude (+ is east).
# 3.  Zone name used in value of TZ environment variable.
# 4.  Comments; present if and only if the country has multiple rows.
#
 # Columns are separated by a single tab.
# The table is sorted first by country, then an order within the country that
# (1) makes some geographical sense, and
# (2) puts the most populous zones first, where that does not contradict (1).

Данные до 1970 г.

Данные до 1970 г. должны быть верными для города, определяющего регион, но не обязательно верны для всего региона. Это связано с тем, что с 1970 года новые регионы создаются только для различения часов.

Например, в период с 23 октября 1963 по 1963 декабря 2009 года в Бразилии только штаты Минас-Жерайс , Эспириту-Санту , Рио-де-Жанейро и Сан-Паулу имели летнее время. Однако запрошенное разделение от America / Sao_Paulo было отклонено в 2010 году на том основании, что с 1970 года часы были одинаковыми во всем регионе.

Время в Германии , которое представлено как Европа / Берлин , неверно для 1945 года, когда в Trizone использовались другие правила перехода на летнее время, чем в Берлине.

Покрытие

Зоны, охватывающие несколько стран после 1970 г.

Есть две зоны, которые охватывают территорию, которая была охвачена двумя странами после 1970 года. База данных соответствует определениям стран в соответствии с ISO 3166-1 , чей предшественник, ISO 3166, был впервые опубликован в 1974 году.

Обслуживание

Справочный код tz и база данных поддерживаются группой добровольцев. Артур Дэвид Олсон вносит большинство изменений в код, а Пол Эггерт - в базу данных. Предлагаемые изменения отправляются в список рассылки tz, который подключен к группе новостей comp.time.tz Usenet . Исходные файлы распространяются через FTP-сервер IANA. Обычно эти файлы берутся распространителем программного обеспечения, например Debian , компилируются, а затем исходный код и двоичные файлы упаковываются как часть этого дистрибутива. Конечные пользователи могут либо полагаться на процедуры обновления своего программного обеспечения, что может повлечь за собой некоторую задержку, либо получить исходный код напрямую и самостоятельно создать двоичные файлы. IETF опубликовала RFC  6557 , «Процедуры для поддержания базы данных часовых поясов» документирующий лучшие практики , основанные на аналогичных принципах.

Unix-подобные системы

Стандартный путь к базе данных часовых поясов - / usr / share / zoneinfo / в дистрибутивах Linux, macOS и некоторых других Unix-подобных системах.

Использование и расширения

Границы часовых поясов

Географические границы в виде наборов координат не являются частью базы данных tz, но границы опубликованы Эриком Мюллером в виде векторных многоугольников. Используя эти векторные многоугольники, для каждого места на земном шаре можно определить зону базы данных tz, в которой он расположен.

Использование в других стандартах

Репозиторий данных Unicode Common Locale (CLDR) относится к зонам в базе данных tz. Однако, поскольку название зоны может меняться от одной версии базы данных tz к другой, CLDR назначает UN / LOCODE для города, используемого в названии зоны, или внутренний код, если такой город для данной зоны отсутствует. зона, в зону tzdb.

Использование в программных системах

База данных tz используется для обработки и преобразования часовых поясов во многих компьютерных программных системах, включая:

Идентификаторы часовых поясов Олсона также используются репозиторием данных Common Locale Unicode (CLDR) и международными компонентами Unicode (ICU). Например, таблица CLDR Windows – Tzid сопоставляет идентификаторы часовых поясов Microsoft Windows со стандартными именами Olson, хотя такое сопоставление не может быть идеальным, поскольку количество часовых поясов в системах Windows значительно ниже, чем в базе данных IANA TZ.

История

Истоки проекта восходят к 1986 году или ранее.

Иск 2011 года

30 сентября 2011 г. судебный процесс Astrolabe, Inc. против Олсона и др. , был внесен в базу данных об авторских правах . В результате 6 октября 2011 года список рассылки базы данных и FTP- сайт были закрыты. Дело касалось использования разработчиками баз данных «Американского атласа » Томаса Г. Шанкса и «Международного атласа » Томаса Г. Шанкса и Рике Поттенгера. Он пожаловался на несанкционированное воспроизведение данных атласа в архиве списков рассылки часовых поясов и в некоторых коллекциях вспомогательных ссылок, поддерживаемых базой данных, хотя на самом деле он не указывал на саму базу данных. Жалоба относилась только к составлению исторических данных о часовых поясах и не касалась текущих таблиц часовых поясов мира tzdata.

Этот судебный процесс был урегулирован 22 февраля 2012 года после участия Electronic Frontier Foundation , когда Astrolabe добровольно отказалась от иска, не обслуживая ответчиков, и согласилась на соглашение не подавать в суд в будущем.

Перейти в ICANN

ICANN взяла на себя ответственность за обслуживание базы данных 14 октября 2011 года. Полная база данных и описание текущих и будущих планов по ее обслуживанию доступны в Интернете в IANA .

Смотрите также

использованная литература

внешние ссылки

Общий

Официальные источники IANA

Страницы руководства

  • zic(8) -  Руководство по администрированию и привилегированным командам Linux (дает синтаксис исходных файлов для базы данных tz)
  • tzfile(5) -  Руководство по форматам файлов Linux (дает формат скомпилированных файлов базы данных tz)