Почему часовой пояс города используется вместо часового пояса региона для tzinfo?

Этот вопрос касается стандартного списка часовых поясов в tzinfo aka Olson Timezone Database.

Пример 1: Я заметил, что Америка / Нью-Йорк или Америка / Детройт (известные как «города-образцы», см. http://www.w3.org/International/docs/timezones/#tzids) используются вместо US / Eastern.

Пример 2: В Канаде часовой пояс Mountain обычно описывается как America / Edmonton, а не Canada / Mountain. Есть части Британской Колумбии с горным временем, но их часовой пояс указан как Америка / Эдмонтон (который находится в Альберте).

В этих случаях, почему вариант «регион / примерный город» должен использоваться вместо версии для страны / зоны? Должна была быть причина, по которой изначально была создана версия для страны / зоны, но почему она там, если это не предпочтительный способ?

Это в основном проблема, когда в стране более одного часового пояса.

Есть ли где-нибудь передовой опыт, объясняющий, почему одно предпочтительнее другого?

(PS это трудная проблема для Google, так как вы получаете все несвязанные или бесполезные результаты. Ближайшее, что я смог найти, было Рекомендации по переходу на летнее время и часовые пояса, но эта проблема не решена.)

РЕДАКТИРОВАТЬ: может ли 2 часовых пояса быть для 1 города? есть "Поскольку не все используют каноническую нотацию Континент / Город для своего часового пояса (например, я предпочитаю использовать более старую нотацию США / Тихого океана, которая все еще поддерживается, но эквивалентна America / Los_Angeles) ". Его утверждение, что «США / Тихоокеанский регион» старше, противоречит моему косвенному предположению, что он был более новым, но все же не является ответом.


person Pixel    schedule 17.08.2012    source источник


Ответы (1)


Файл Theory, распространяемый с базой данных Olson, содержит информацию:

Имена файлов правил часовых поясов

Соглашения об именах файлов правил часовых поясов пытаются найти баланс между следующими целями:

  • Однозначно идентифицируйте каждый национальный регион, где все часы согласованы с 1970 года. Это важно для предполагаемого использования: статические часы, сохраняющие местное гражданское время.

  • Укажите людям, где находится этот регион. Это упрощает [sic] использование.

  • Будьте стойкими в условиях политических изменений. Это уменьшает количество обновлений и хаков обратной совместимости. Например, названия стран обычно не используются, чтобы избежать несовместимости, когда страны меняют свое название (например, Zaire⟶Congo) или когда страны меняют страну (например, Гонконг из колонии Великобритании в Китай).

  • Быть переносимым для самых разных реализаций. Это способствует использованию технологии.

  • Используйте единое соглашение об именах во всем мире. Это упрощает как использование, так и обслуживание.

Это соглашение об именах не предназначено для использования неопытными пользователями для самостоятельного выбора значений TZ (хотя они, конечно, могут проверить и повторно использовать существующие настройки). Дистрибьюторам следует предоставить документацию и / или простой интерфейс выбора, объясняющий названия; см. один пример в программе 'tzselect', поставляемой с этим дистрибутивом.

Имена обычно имеют форму AREA / LOCATION, где AREA - это название континента или океана, а LOCATION - это название определенного места в этом регионе. Северная и Южная Америка имеют одну и ту же территорию - «Америку». Типичные названия - «Африка / Каир», «Америка / Нью-Йорк» и «Тихоокеанский регион / Гонолулу».

Вот общие правила выбора названий локаций в порядке убывания важности:

  • Используйте только допустимые компоненты имени файла POSIX (т. Е. Части имен, отличные от '/'). В компоненте имени файла используйте только буквы ASCII, «.», «-» и «_». Не используйте цифры, так как это может создать двусмысленность со строками POSIX TZ. Компонент имени файла не должен превышать 14 символов или начинаться с "-". Например, «Бруней» предпочтительнее «Bandar_Seri_Begawan».
  • Включите хотя бы одно местоположение в правила часового пояса для каждой страны. Достаточно одной такой локации. Используйте ISO 3166 (см. Файл iso3166.tab), чтобы решить, является ли что-то страной. Однако необитаемые регионы ISO 3166, такие как остров Буве, не нуждаются в местоположении, поскольку местное время там не определено.
  • Если все часы в регионе страны согласованы с 1970 года, не беспокойтесь о включении более одного местоположения, даже если часы в субрегионе не согласовывались до 1970 года. В противном случае эти таблицы стали бы досадно большими.
  • Если имя неоднозначно, используйте менее двусмысленную альтернативу; например многие города называются Сан-Хосе и Джорджтаун, поэтому предпочтительнее «Коста-Рика», чем «Сан-Хосе», и «Гайана», а не «Джорджтаун».
  • Сохраняйте компактность. Используйте города или небольшие острова, а не страны или регионы, чтобы любые будущие изменения часовых поясов не разделяли местоположения на разные часовые пояса. Например. предпочитаю «Париж» «Франции», поскольку во Франции было несколько часовых поясов.
  • Используйте общепринятую английскую орфографию, например предпочитают «Рим» «Рома» и предпочитают «Афины» настоящему имени (в котором используются греческие буквы). Ограничения на имя файла POSIX поддерживают это правило.
  • Используйте самые густонаселенные места в часовом поясе страны, например предпочитаю «Шанхай» «Пекину». Среди мест с похожим населением выберите наиболее известное, например предпочитаю «Рим» «Милану».
  • Используйте форму единственного числа, например предпочитаю "Канарейки" "Канарским островам".
  • Опускайте общие суффиксы, такие как "_Islands" и "_City", если это не приведет к двусмысленности. Например. предпочитают «Кайман» «Каймановым островам» и «Гватемалу» «Гватемале_Сити», но предпочитают «Мексика_Сити» «Мексике», потому что в стране Мексика есть несколько часовых поясов.
  • Используйте "_" для обозначения пробела.
  • В аббревиатурах имен опускайте '.', например предпочитаю "Святая Елена" "Святой Елене".
  • Не изменяйте установленные имена, если они лишь незначительно нарушают приведенные выше правила. Например, не меняйте существующее название «Рим» на «Милан» только потому, что население Милана несколько больше, чем население Рима.
  • Если имя изменено, поместите его старое написание в файл backward.

В файле zone.tab перечислены географические местоположения, используемые для именования файлов правил часовых поясов. Это исчерпывающий список канонических названий для географических регионов.


Обратите внимание, что недавно (август 2012 г.) в списке рассылки [email protected] возникли разногласия по поводу директивы «Шанхай предпочтительнее Пекина».

person Jonathan Leffler    schedule 17.08.2012
comment
Это здорово, но было бы неплохо узнать, почему используется город? Это потому, что город в настоящее время может находиться в том же часовом поясе, что и регион, но не всегда или был? - person Juan Mendes; 17.08.2012
comment
Это потому, что названия регионов меняются даже больше, чем названия стран. - person Jonathan Leffler; 17.08.2012
comment
Некоторые города, округа и штаты по политическим мотивам предпочитают не следовать правилам. Примером этого является Индиана. - person Frank R.; 20.08.2012
comment
Отличная информация, Джонатан. К сожалению, в нем ничего не говорится об этих американских / восточных и т. Д. И о том, как они вообще возникли. На мой взгляд, они имеют много смысла (больше, чем разнообразие America / New_York) в странах с несколькими часовыми поясами, но они, похоже, нарушают рекомендации, которые вы воспроизвели здесь, поэтому возникает вопрос, как они появились. - person Pixel; 20.08.2012
comment
@Pixel: Имена в американском / восточном стиле были старым вариантом соглашения об именах, использовавшимся до того, как было введено в действие описанное выше. Это изменение было сделано довольно давно (90-е, если не 80-е). Имена США / Востока и т. Д. Все еще существуют в файле backward, упомянутом в примечаниях выше; это ссылка на Америку / Нью_Йорк. - person Jonathan Leffler; 20.08.2012