О координации изменений во временных зонах

в 6:45, , рубрики: datetime, IT-стандарты, timezone, tzdata, Локализация продуктов, Программирование

tz map

Знаете, что общего у Турции, Чили, России, Венесуэлы, Азербайджана, Северной Кореи и Гаити? Хаос в управлении временными зонами.

Нет, это не шутка. На самом деле это достаточно серьёзная проблема. Хуже всего во временных зонах не то, что они вообще существуют, и даже не летнее время. Хуже всего то, что часто они изменяются совершенно внезапно. Позвольте я объясню.

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

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

Очень важно, чтобы перед внесением изменений в свои временные зоны или правила перехода на летнее время правительства государств оставляли достаточное количество времени на обновления для IT индустрии. Они должны учитывать тот объём работы, которую люди должны при этом выполнить, чтобы проверить изменения, создать обновление, протестировать его, а затем опубликовать и распространить. Кроме этого нужно иметь в виду, что конечные пользователи не всегда обновляют свои системы сразу же. Обычное дело, когда пользователь получает обновление временной зоны через недели, а то и месяцы после публикации.

Конкретный пример — Турция

В качестве примера взглянем на Турцию. В 2015 году правительство решило, что было бы неплохо отложить конец летнего времени на две недели, чтобы дать людям больше светлого времени для голосования в период выборов. Они перенесли окончание летнего времени с 25 октября на 8 ноября.

Первые слухи об этом появились в неофициальной новостной статье 8 сентября, примерно за 6 недель до предполагаемого изменения. Эта статья не была замечена TZ коммьюнити (прим. пер.: имеется в виду сообщество, занимающееся временными зонами; это просто люди, волонтёры, объединённые интересом; далее будет использоваться этот термин, иного хорошего перевода я не придумал), вплоть до 19 сентября. Сложно отталкиваться от одних лишь новостей, ибо они часто содержат неверную информацию или путаются в деталях. Несколько слов чиновника журналисту — этого просто недостаточно.

29 сентября правительственное новостное агентство также сообщило об изменении. Это всё ещё не было полностью официальным, ибо не сопровождалось ссылкой на какой-либо указ или закон. Но этого было достаточно, чтобы убедить TZ коммьюнити, что это действительно может случиться, после чего было инициировано изменение в базу данных временных зон IANA, а несколькими днями позже, 1 октября, было выпущено обновление.

Наконец 4 октября в правительственном бюллетене было выпущено официальное объявление. Примерно за три недели до вступления изменения в силу.

Многие представители IT индустрии, включая крупнейших игроков типа Apple, Google и Oracle, забрали данные из IANA и опубликовали их через свои собственные каналы. Например, Apple выпустила обновление с изменением зоны для iPhone и iPad вместе с обновлением iOS 9.1 21 октября, оставив пользователям лишь три дня, чтобы установить это обновление и избежать путаницы со временем.

Для Microsoft Windows, которая обновляет временные зоны несколько иначе и требует более высокого уровня подтверждения изменений, объявление было сделано 9 октября, а 20 октября было выпущено обновление.

В некоторых случаях день изменения был пропущен. Например, так случилось с pytz — популярной библиотекой временных зон для Python, обновление 2015.7 которой было опубликовано лишь 26 октября.

И что же в итоге случилось? Цитата BBC:

Сбитые с толку турки спрашивают «который час?» после того, как часы на электронных устройствах проигнорировали решение правительства отложить сезонное изменение времени.

Или вот из сообщений IBT:

Миллионы турок проснулись утром в замешательстве, так как смартфоны, планшеты и компьютеры автоматически перевели часы как и прочие страны в зоне восточноевропейского времени, несмотря на то, что Турция на две недели отложила перевод часов на час назад.

Эффект от этого, по всей видимости, был прямо противоположный ожидаемому. Но вообще-то, правительству должно быть виднее, потому что практически та же ерунда случилась годом ранее!

По соощениям IBNA в 2014-ом:

Невероятной путаницей для 52.9 миллионов турецких избирателей обернулось решение властей отложить на день перевод часов на час вперёд. Причиной, по которой переход на летнее время был отложен, по словам правительства Эрдогана было желание улучшить процесс выборов, но никто не подумал про фактор «новых технологий». Все смартфоны турецких граждан автоматически изменили время, и в итоге тысячи избирателей пришли на участки слишком рано и ждали ещё целый час, чтобы проголосовать.
То же самое произошло и с компьютерами, которые не загрузили новую версию ПО. Проблемы также возникли в системе доставки багажа в аэропорту Стамбула: система автоматически перевела время, игнорируя планы правительства, что в итоге привело к огромной задержке в выдаче багажа пассажирам. Кроме этого были проблемы со многими рейсами из-за того, что пассажиры путали время вылета.

А что насчёт остального мира?

Не только Турция не учится на своих ошибках, другие страны мира наступали на те же самые грабли не раз. Помните список в начале поста? Давайте чуть подробнее:

  • В Чили в 2015 году использовали постоянное летнее время, но 13 марта 2016 года правительство анонсировало переход на поясное время начиная с 15 мая (уведомление за два месяца).

  • В России 11 различных смещений во временных зонах, от UTC+02 до UTC+12, с их сложной историей изменений.
    27 марта 2016 года 6 регионов сменили временные зоны. Каждый из этих регионов выпустил свой собственный закон, задающий это изменение. Один из этих законов был подписан 30 декабря (уведомление за 12 недель), что вполне допустимо. Однако другие были подписаны 15 февраля (уведомление за шесть недель) или 9 марта (уведомление за две недели).
    Ещё два других региона ожидали подписания указов в течение всего этого периода, один из этих указов был подписан лишь 5 апреля с датой перехода 24 апреля (прим. пер.: речь о Магаданской области) (уведомление за три недели). Другой до сих пор ожидает подписания президентом. Ожидается, что это произойдёт в течение ближайших дней, а датой перехода будет 29 мая (уведомление за четыре недели) (прим. пер.: речь о Томской области; кстати, мы уже накатили апдейт).

  • Венесуэла была на UTC-4:30 с 2007 года, но недавно власти решили вернуться на UTC-4 с 1 мая 2016. О переходе впервые было объявлено 15 апреля, официально — 18 апреля с публикацией в правительственном бюллетене (уведомление за две недели).

  • Азербайджан в 2016 году отменил переход на летнее время. Изменение было запланировано на 27 марта, но никаких сообщений об этом не было вплоть до 17 марта (уведомление за десять дней).

  • Северная Корея переехала из UTC-9 в UTC-8:30 15 августа 2015. Об этом было объявлено 7 августа (уведомление за восемь дней).

  • В Гаити отменили переход на летнее время в 2016 году. Это должно было произойти 13 марта, но 12 марта (уведомление за один день!) правительство выпустило пресс-релиз, отменяющий изменение.

Прочие проблемы координации

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

Одно из таких мест — Фиджи. Переход на летнее время выполняется там с 2009 года. Однако каждый год правительство делает объявление о том, когда летнее время начнётся и когда оно закончится. Каждый год эти даты разные, и каждый раз до последнего момента не ясно, когда власти примут решение или что делать в случае, если они о нём не объявят. Было бы гораздо проще, если бы они приняли постоянное расписание, а объявление делали только в случае отклонений от этого расписания.

Другое такое место — Морокко, где расписание начала и конца летнего времени нормально определено, но каждый год начиная с 2012 там применяется «период приостановки летнего времени», когда летнее время заканчивается перед началом Рамадана и снова начинается чуть позднее. Это означает не только перевод часов четыре раза в течение календарного года, но также и то, что никто понятия не имеет, когда произойдут второй и третий переходы, пока власти не сделают объявление. Отчасти это обосновано тем, что даты Рамадана привязаны к наблюдаемому новолунию. Тем не менее, лично я считаю, что они должны зафиксировать переход на летнее время, пусть даже оно начинается до Рамадана и заканчивается после. Непредсказуемость дат приводит к тому, что становится слишком сложно узнать время в Морокко, если ты не в Морокко. (Кстати, Египет практиковал то же самое, но только в 2010 и 2014.)

Рекомендации правительствам стран

Прежде всего, я должен подчеркнуть, что это мои личные рекомендации. Я не говорю ни от лица своего правительства, ни своего работодателя, ни TZ коммьюнити. Эти рекомендации основаны на многолетнем опыте работы с временными зонами и наблюдениях происходящего.

Если вы собираетесь внести изменение в свою временную зону или зоны, — будь это изменение смещения от UTC, или же принятие или отмена летнего времени, или изменение дат начала и конца летнего времени, — пожалуйста, сделайте следующее:

  • Сделайте заблаговременное уведомление, хотя бы за шесть месяцев до изменения. Ещё лучше — за год или больше.
  • Оформите это уведомление в виде официального правительственного указа или принятием закона. Опубликуйте текст закона на официальном правительственном сайте.
  • Не забудьте указать все детали изменения, включая дату и время вступления изменения в силу. Например, «1 апреля 2017 год в 01:00 часы будут переведены вперёд на 30 минут». Не говорите просто «в апреле состоится перевод времени». Также, если изменение затрагивает только некоторые регионы страны, пожалуйста укажите точные области.
  • Уведомите своих граждан и весь мир через пресс-релиз и СМИ, но не полагайтесь исключительно на этот способ анонсирования. Каждое такое уведомление должно быть подкреплено официальным указом или законом.
  • Отправьте уведомление TZ коммьюнити. Для этого нужно просто послать письмо на tz@iana.org — адрес дискуссионного листа базы временных зон. Письмо должно содержать ссылку на опубликованный анонс на официальном сайте правительства.
  • Если предложенное изменение отменяется — также сделайте заблаговременное уведомление.

Следование этим правилам гарантирует, что ваше изменение дойдёт до IT отрасли, включая компьютеры, мобильные телефоны и прочие устройства.

Рекомендации разработчикам ПО

  • Не пытайтесь изобрести свои собственные временные зоны или хардкодить список временных зон в приложении.
  • Позвольте фичам платформы или библиотеке выполнять преобразования с участием временных зон. Не пытайтесь выдумать свои правила преобразования.
  • Не полагайтесь исключительно на смещения от UTC, а также не делайте никаких собственных предположений относительно летнего времени какой-то временной зоны.
  • Вовремя обновляйте базу временных зон. Ознакомьтесь с механизмами вашей платформы или библиотеки, позволяющими делать это.
  • Подпишитесь на рассылку TZ Announcements, чтобы быть в курсе обновлений.
  • Если вы узнали о грядущем изменении во временной зоне в каком-то месте, или же у вас есть другие вопросы относительно временных зон в IT, присоединяйтесь к рассылке TZ Discussion.
  • Используйте timeanddate.com для проверки любых предположений касательно временных зон какого-то региона. Точность данных этого сайта проверена временем, а его владельцы — члены TZ коммьюнити.
  • Для Windows, .NET и прочих продуктов Microsoft следите за новостным каналом на этом сайте, чтобы узнавать, когда появляются обновления для платформы. (Тем не менее, используйте базу временных зон IANA везде, где возможно, даже если это означает использование сторонних библиотек.)

Автор: MaxxArts

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js