Tz database

Карта всех временных зон на базе tz database версии 2023 года

tz databaseангл. timezone database — база данных часовых поясов) или IANA Time Zone Database или zoneinfo database (база данных информации о зонах) — совместно собираемая информация о мировых часовых зонах, предназначенная для использования в первую очередь операционными системами и компьютерными программами[1]. Иногда она упоминается как «база данных Олсона» (Olson database), так как была основана Артуром Дэвидом Олсоном (Arthur David Olson)[2]. Редактором и хранителем базы является Пол Эггерт (Paul Eggert)[3].

Её самая известная возможность — унифицированное именование часовых поясов, разработанное Полом Эггертом, такое, как «Америка/Нью-Йорк» и «Европа/Париж»[4]. В базе данных пытаются собрать информацию обо всех исторических часовых поясах и всех их гражданских изменениях начиная с 1970 года, эпохи юникс[5]. Она также включает в себя информацию о переходе на летнее время, и даже запись високосных секунд[6].

Истоки проекта восходят по крайней мере к 1986 году[7]. База данных проекта, а также некоторые исходные файлы, находятся в общественном достоянии[8]. Новые версии базы данных публикуются, как правило, несколько раз в год[9].

Осенью 2011 года компания Astrolabe подала в суд иск по обвинению Олсона и Эггерта в нарушении авторских прав. В связи с этим 6 октября Олсон прекратил доступ к ftp-серверу базы данных и публикацию списка рассылки[10]. Организация ICANN приняла решение разместить на своих серверах базу знаний о часовых поясах. Теперь tzdata находится на серверах Администрации адресного пространства Интернет (IANA, подразделение ICANN) по адресу http://www.iana.org/time-zones. В феврале 2012 года Astrolabe отозвала свой иск, принеся извинения общественности — «Наш судебный иск против мистера Олсона и мистера Эггерта был основан на превратном понимании закона. Теперь мы понимаем, что исторические факты не являются ничьей собственностью и, соответственно, отзываем свою претензию. Мы глубоко сожалеем о проблемах, которые появились из-за нашего иска у мейнтейнеров базы данных TZ и у пользователей интернета»[11].

Функциональность

В базе tzdata содержится детальная информация обо всех часовых поясах во всех регионах мира:

  • координатная привязка основных населённых пунктов, характеризующих часовой пояс;
  • смещение локального времени в различных регионах относительно универсального времени UTC;
  • указано, в каких регионах применяется летнее время, насколько оно смещается относительно стандартного, указаны точные даты и время переключения на летнее время и обратно в различных регионах в различные периоды;
  • информация о дополнительных секундах.

Важной особенностью базы tzdata является то, что она хранит не только текущее состояние всех мировых часовых поясов (то есть текущие правила расчёта локального времени относительно UTC в каждом регионе мира), но все изменения этих правил расчёта локального времени для всех регионов за всё время с начала UNIX-эпохи (1 января 1970 года). Например, если какая-то страна с определённого момента начинает использовать другой часовой пояс, меняет дату перехода на летнее время или отменяет переход, то эта информация сохраняется в tzdata с точностью до секунды, когда это произошло.

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

  • 2010-12-01 14:00 (MSK) — соответствует 2010-12-01 11:00 (UTC)
  • 2011-12-01 14:00 (MSK) — соответствует 2011-12-01 10:00 (UTC)

Поскольку в 2011 году в России был отменён сезонный перевод времени и установлено постоянное летнее время[12], а затем с 26 октября 2014 года — постоянное зимнее — то в разные временные периоды часовая зона Москвы соответствовала UTC +03:00, UTC +04:00 и UTC +03:00/+04:00. База tzdata помогает разрешить подобные неоднозначности, так как там хранится подробная информация о том, когда и как рассчитывалось время в каждом из часовых поясов в каждый из временных периодов с 1970 года[13].

Сообщество разработчиков старается вносить изменения «заранее» — до вступления в силу соответствующих правил расчетов времени, чтобы к этому моменту пользовательские операционные системы уже «знали» об изменениях. Так, большое обновление российских часовых зон, которое затрагивает исчисление времени с 2:00 26 октября 2014 года, было опубликовано в версии 2014f уже в августе 2014 года.

Именование

Временные зоны имеют уникальные имена в форме «Район/Расположение» (Area/Location), например «Америка/Нью-Йорк», чтобы их было легче воспринимать людям. Выбраны англоязычные названия или их эквиваленты, опускается пунктуация и общие суффиксы, пробел заменяется на подчёркивание, используются дефисы.

Район включает имена континентов, океанов и «прочее» (Etc). В набор континентов и океанов входят: Африка, Америка, Антарктика, Северный Ледовитый океан, Азия, Атлантический океан, Австралия, Европа, Индийский океан и Тихий океан.

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

Временные зоны России в tz database на 2009 год

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

В большинстве UNIX-подобных ОС скомпилированные файлы с описанием часовых зон из пакета tzdata можно найти здесь: /usr/share/zoneinfo/[13].

Версии tzdata нумеруются следующим образом: вначале четырёхзначное число, означающее год выхода этой версии, затем одна буква латинского алфавита по порядку: a, b, c, d и т. д. по мере выхода новых версий tzdata в течение одного года. Например, в 2010 году выходили версии tzdata: 2010a, 2010b, 2010c и далее до версии 2010o. В 2011 году выходили версии tzdata: 2011a, 2011b, 2011c… и далее до 2011n, в сентябре 2014 года вышла версия 2014h[14].

Управление

Код и база данных управляются группой добровольцев. Артур Дэвид Олсон вносит основные изменения в код, а Пол Эггерт — в базу данных. Предложенные изменения высылаются в список рассылки, передающий сообщения в группу Usenet comp.time.tz. Исходные файлы распространялись через FTP-сервер elsie.nci.nih.gov (недоступен), а позже — через ftp.iana.org/tz. Обычно эти файлы принимаются от дистрибьюторов программного обеспечения, таких как Debian, компилируются, а затем исходники и бинарные файлы упаковываются как часть раздачи. Конечные пользователи могут или полагаться на процесс обновления своего программного обеспечения, или получить код непосредственно из источника на ftp://ftp.iana.org/tz.

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

CLDR использует UN/LOCODE для определения регионов[15]. Это означает, что идентификаторы ссылаются на страны, чего создатели tz database хотели избежать.

Использование в программном обеспечении

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

  • BSD-подобные системы, включая FreeBSD, NetBSD, OpenBSD, DragonFly BSD и Mac OS X;
  • GNU C Library и использующие её системы, включая GNU, большинство Linux, BeOS, Haiku, Nexenta OS и Cygwin;
  • System V Release 4-производные системы, такие, как Solaris и UnixWare;
  • AIX 6.1 и более поздние версии[16][17] (ранние версии AIX, начиная с AIX 5.2, включали информацию о временных зонах[18] для поддержки сторонних приложений вроде MySQL[19], но не использовали её сами[18][20]);
  • некоторые другие Unix-системы, включая Tru64 и UNICOS/mp (а также IRIX, до сих пор поддерживаемый, но не поставляемый);
  • OpenVMS;
  • Java Runtime Environment начиная с версии 1.4 (2002 год);
  • модули Perl DateTime::TimeZone и DateTime::LeapSecond, начиная с 2003 года;
  • PHP-релизы начиная с 5.1.0 (2005 год);
  • модуль Python pytz;
  • модуль .NET Framework zoneinfo;
  • выпуски Oracle начиная с 10g (2004 год);[21]
  • PostgreSQL начиная с версии 8.0 (2005 год);
  • встроенное программное обеспечение, вроде прошивок, использующихся в IP-часах.

ID базы Олсона также используются в Unicode Common Locale Data Repository (CLDR) и International Components for Unicode (ICU). Например, CLDR Windows → Tzid table maps Microsoft Windows[22].

Примечания

  1. Eggert, Paul; Olson, Arthur David.: Sources for time zone and daylight saving time data  (неопр.) (29 ноября 2007). Дата обращения: 3 декабря 2007. Архивировано 1 августа 2012 года.
  2. Olson, Arthur David (1986-12-16). "Resolved timezone issue? Other issues. New ctime manual page". tz (Mailing list). Архивировано из оригинала 4 августа 2011.
  3. Eggert, Paul (2005-01). "Re: FW: IANA time zone registration - proposal". tz (Mailing list). Архивировано из оригинала 27 сентября 2011.
  4. Eggert, Paul (1993-10-20). "proposal for time zone names". tz (Mailing list). Архивировано из оригинала 4 августа 2011.
  5. Olson, Arthur David (1987-03-18). "Re: ist of issues". tz (Mailing list). Архивировано из оригинала 4 августа 2011.
  6. Devine, Bob (1988-06-02). "leap seconds; [0-60] is ok". tz (Mailing list). Архивировано из оригинала 4 августа 2011.
  7. Olson, Arthur David (1986-11-24). "seismo!elsie!tz ; new versions of time zone stuff". tz (Mailing list). Архивировано из оригинала 4 августа 2011.
  8. Eggert, Paul (1995-11-11). "questions and comments on http://tycho.usno.navy.mil/tzones.html". tz (Mailing list). Архивировано из оригинала 4 августа 2011.
  9. zoneinfo tzcode and tzdata archives (FTP)  (неопр.). Дата обращения: 30 октября 2007. (недоступная ссылка)
  10. Olson, Arthur David. Civil suit; ftp shutdown; mailing list shutdown (англ.) (6 октября 2011). Дата обращения: 8 октября 2011. Архивировано 1 августа 2012 года.
  11. EFF Wins Protection for Time Zone Database (англ.). Electronic Frontier Foundation (22 февраля 2012). Дата обращения: 23 февраля 2012. Архивировано 23 февраля 2012 года..
  12. Законопроект № 509727-5 Об исчислении времени  (неопр.). Дата обращения: 14 октября 2011. Архивировано из оригинала 12 мая 2013 года.
  13. 1 2 roman_tik: Tzdata — глобальная база знаний о часовых поясах  (неопр.). Дата обращения: 30 сентября 2016. Архивировано 7 августа 2016 года.
  14. IANA — Time Zone Database  (неопр.). Дата обращения: 26 октября 2011. Архивировано 8 марта 2013 года.
  15. Unicode Locale Extension (‘u’) for BCP 47 — CLDR — Unicode Common Locale Data Repository  (неопр.). Дата обращения: 7 июня 2011. Архивировано 28 июля 2011 года.
  16. Olson time zone support and setup  (неопр.). AIX 7.1 information. IBM. Дата обращения: 12 марта 2011. Архивировано 1 августа 2012 года.
  17. Managing the Time Zone Variable  (неопр.). IBM (2 февраля 2007). Дата обращения: 11 марта 2011. Архивировано из оригинала 13 июля 2011 года.
  18. 1 2 AIX O/S updated to support 2007 Daylight Saving Time change  (неопр.). IBM (18 октября 2007). Дата обращения: 12 марта 2011. Архивировано 1 августа 2012 года.
  19. 2007 daylight savings time changes for Unix  (неопр.). Academic Computing and Communications Center, University of Illinois at Chicago (25 февраля 2007). Дата обращения: 18 марта 2008. Архивировано 1 августа 2012 года.)
  20. Wickremasinghe, Christopher. Introduction of daylight saving time in Western Australia 2006  (неопр.). AIX Wiki. IBM (30 марта 2009). Дата обращения: 11 марта 2011. Архивировано 1 августа 2012 года.
  21. Oracle Database Globalization Support Guide 10g Release 1 (10.1): Chapter 4, Section "Choosing a Time Zone File" (англ.). — Oracle Corporation, 2004. — P. 4—14. Архивировано 6 апреля 2015 года.
  22. Windows → Tzid  (неопр.). Unicode Consortium (12 ноября 2007). Дата обращения: 17 февраля 2008. Архивировано 1 августа 2012 года.
Перейти к шаблону «Часовые пояса UTC»
Часовые пояса по смещению от UTC
  • −12
  • −11
  • −10
  • −9:30
  • −9
  • −8:30
  • −8
  • −7
  • −6
  • −5
  • −4:30
  • −4
  • −3:30
  • −3
  • −2:30
  • −2
  • −1
  • −0:25:21
  • UTC (0)
  • +0:20
  • +0:30
  • +1
  • +2
  • +2:30
  • +3
  • +3:30
  • +4
  • +4:30
  • +5
  • +5:30
  • +5:40
  • +5:45
  • +6
  • +6:30
  • +7
  • +7:20
  • +7:30
  • +8
  • +8:30
  • +8:45
  • +9
  • +9:30
  • +10
  • +10:30
  • +11
  • +11:30
  • +12
  • +12:45
  • +13
  • +13:45
  • +14
В некоторых странах северного и южного полушарий используется летнее время. Курсивом выделены часовые пояса, не использующиеся в настоящее время.