база данных tz - tz database
База данных 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 году.
- Азия / Аден - две страны до 1990 года: Северный Йемен ( ISO 3166-1 : YE; столица Сана) и Южный Йемен (Народная Республика, ISO 3166-1: YD, ISO 3166-3 : YDYE; столица: Аден).
- Европа / Берлин - две страны до 1990 года : Восточная Германия (ISO 3166-1: DD, ISO 3166-3: DDDE) и Западная Германия (ISO 3166-1: DE).
Обслуживание
Справочный код 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 используется для обработки и преобразования часовых поясов во многих компьютерных программных системах, включая:
- Системы, производные от BSD , включая FreeBSD , NetBSD , OpenBSD , DragonFly BSD , macOS и iOS (они также используют эталонный код обработки базы данных TZ в качестве реализации TZ POSIX API);
- GNU C Library и системы , которые используют его, включая GNU , большинство дистрибутивов Linux , BeOS , Haiku , Nexenta OS и Cygwin ;
- Системы, производные от System V Release 4 , такие как Solaris и UnixWare ;
- AIX 6.1 и новее (более ранние версии AIX, начиная с AIX 5.2, включают zoneinfo для поддержки сторонних приложений, таких как MySQL , но сами не используют ее);
- Android
- несколько других систем Unix , включая Tru64 и UNICOS / mp (также IRIX , все еще поддерживается, но больше не поставляется);
- OpenVMS ;
- Java Runtime Environment начиная с версии 1.4 (2002 год);
- Java библиотека Joda времени ;
- Perl модули DateTime :: TimeZone и DateTime :: секунда координации с 2003 года;
- PHP выпускается с версии 5.1.0 (2005 г.);
- Рубин Драгоценный камень TZInfo ;
- Python модуль pytz ;
- JavaScript спецификация языка для интернационализации явно задает использование имен IANA Time Zone для API, и рекомендует использование данных часовых поясов , а также.
- Также доступны многочисленные библиотеки: timezone-js , BigEasy / TimeZone , WallTime-js и moment-timezone ;
- модуль Pandas (Python) [1] ;
- .NET Framework библиотеки NodaTime , TZ4Net и ZoneInfo ;
- Haskell библиотеки часового пояса-серии и часовой пояс-Olson ;
- Erlang модуль Ezic ;
- Go стандартная библиотека времени пакет;
- Ржавчина обрешетка Chrono-TZ ;
- Писк Smalltalk время пакет;
- C ++ библиотеки подталкивания и Qt ;
- Delphi и Free Pascal библиотека TZDB ;
- Free Pascal библиотека PascalTZ ;
- В языке команд инструментов есть команда часов, использующая tzdata;
- Oracle выпускается с 10g (2004 г.);
- PostgreSQL, начиная с версии 8.0 (2005 г.);
- Microsoft SQL Server библиотека зоны поддержки времени SQL Server
- MongoDB, начиная с выпуска 3.6;
- встроенное программное обеспечение, такое как прошивка, используемая в IP-часах.
Идентификаторы часовых поясов Олсона также используются репозиторием данных 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 .
Смотрите также
использованная литература
внешние ссылки
Общий
- Юридическое время ( PDF ) , ITU, 2015.
- Домашняя страница базы данных tz , UCLA (не рекомендуется, см. официальные источники IANA ниже)
- Архив списка рассылки tz , Gmane, заархивирован с оригинала 3 февраля 2008 г..
- tz (архив) (список рассылки).
- список рассылки tz в ICANN
- «Литературная оценка базы данных Olson / ZoneInfo / TZ» от Jon Udell
Официальные источники IANA
- Домашняя страница
- FTP
- rsync , по адресу rsync: //rsync.iana.org/tz/
Страницы руководства
- Руководство по администрированию и привилегированным командам Linux (дает синтаксис исходных файлов для базы данных tz) -
- Руководство по форматам файлов Linux (дает формат скомпилированных файлов базы данных tz) -