YourWorldTime

Почему EST двусмысленно и что использовать вместо него

· 4 мин чтения

Сокращения часовых поясов — неформальные ярлыки без ответственного органа и без гарантии уникальности. IST — это Индия, Ирландия и Израиль; CST — Америка, Китай и Куба. Используйте идентификаторы IANA.

В приглашении из календаря написано «14:00 IST». В зависимости от того, кто его отправил, это 08:30 UTC, 13:00 UTC или 12:00 UTC. Ничто в строке не подсказывает, какое именно, и все три прочтения — правильное словоупотребление.

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

Столкновения, которые важны

IST — три значения, и все в ходу:

Значение Смещение Пояс
Indian Standard Time UTC+05:30 Asia/Kolkata
Irish Standard Time UTC+01:00 Europe/Dublin (только летом)
Israel Standard Time UTC+02:00 Asia/Jerusalem

Индию и Ирландию разделяют четыре с половиной часа. Встреча, назначенная не в том IST, не «чуть раньше» — она мимо почти на весь рабочий день.

CST — четыре значения:

Значение Смещение Пояс
Central Standard Time (Северная Америка) UTC-06:00 America/Chicago
China Standard Time UTC+08:00 Asia/Shanghai
Cuba Standard Time UTC-05:00 America/Havana
Central Standard Time (Австралия) UTC+09:30 Australia/Adelaide

Чикаго и Шанхай разделяют четырнадцать часов.

PST — Pacific Standard Time на UTC-08:00 и Philippine Standard Time на UTC+08:00. Ровно шестнадцать часов разницы, а значит, ошибка попадает уже в другой календарный день.

BST — British Summer Time на UTC+01:00 и Bangladesh Standard Time на UTC+06:00.

EST — Eastern Standard Time в Северной Америке на UTC-05:00 и исторически то сокращение, которым Австралия обозначала свои восточные штаты на UTC+10:00 до того, как утвердилось AEST. В старых австралийских документах голая форма встречается до сих пор.

Другая беда: сокращения сезонны

Даже там, где сокращение уникально, оно называет лишь половину года.

America/New_York — это EST с ноября по март и EDT с марта по ноябрь. Значит, «EST» в июле не описывает вообще никаких существующих часов: пояс в это время на EDT. Люди всё равно так пишут, имея в виду «нью-йоркское время», и система, понявшая это буквально, семь месяцев считает на час неверно.

Именно поэтому «EST» — самое неправильно употребляемое сокращение в интернете: им называют место, тогда как это название времени года в этом месте.

У большинства поясов сокращения нет вовсе

У поясов англоязычного мира буквенные сокращения по большей части есть. У большинства поясов их нет.

У Токио, Шанхая и Сан-Паулу в данных ICU, которыми пользуется любая английская локаль, буквенного сокращения нет — они выводятся как «GMT+9», «GMT+8» и «GMT-3». Вы встретите написание «JST» для Японии, и его поймут, но это обычай, а не данные.

Отсюда очевидное искушение для всякого, кто делает инструмент для часовых поясов: заполнить пробелы. Выдумать «JST», потому что выглядит правдоподобно, «BRT» для Бразилии, что-нибудь для Катманду. Этот сайт сознательно так не делает. Там, где ни одна локаль не даёт букв, он показывает смещение — потому что единственное его обещание в том, что данные берутся из базы IANA, а не из догадок, и выдуманное сокращение — ровно та правдоподобная неправда, из-за которой справочнику перестают верить.

Что использовать вместо

Идентификаторы IANA. America/New_York, Asia/Kolkata, Europe/Dublin. Они уникальны, устойчивы и называют место с историей правил, а не время года.

Они переживают и смену правил. Когда Турция отменила летнее время в 2016 году, Europe/Istanbul продолжил означать Турцию. А всякий код, завязанный на «EET» или «EEST», пришлось менять.

Когда пишете людям, называйте город и смещение: «14:00 в Мумбаи (UTC+05:30)». Читатель где угодно сможет действовать, не зная, какое именно IST вы имели в виду.

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

В интерфейсах и данных используйте ISO 8601 с явным смещением или Z, а идентификатор ведите отдельно, когда нужно знать где, а не только какое смещение.

Когда прочитать всё-таки приходится

Если сокращение вам прислали, а спросить нельзя, опирайтесь на контекст:

  • Кто прислал? Индийская компания имеет в виду Индию, ирландская — Ирландию.
  • При каком смещении предложенное время выглядело бы для них разумным? Никто не ставит звонок на 03:00.
  • Есть ли в переписке город? Город снимает вопрос полностью.

А если цена вопроса высока — разговор с клиентом, срок, окно выкатки, — спросите. Десять секунд «это Индия или Ирландия?» дешевле любой альтернативы, и тот, кого вы спросите, скорее всего сам об этом задумывался.

Сокращения, которые безопасны

Не всякое сокращение оспаривается. Несколько на практике уникальны и в тексте вполне допустимы — но всё равно не в коде:

  • UTC — одно значение, по определению
  • CEST — Central European Summer Time, уникально
  • AEDT / AEST — Australian Eastern, однозначны с тех пор, как приняли приставку A
  • NZDT / NZST — Новая Зеландия
  • JST — Япония, по обычаю, а не по данным; ICU не несёт его ни для одной английской локали

Обратите внимание на закономерность: безопасны те, где есть приставка страны или континента. «Eastern Standard Time» было обречено на столкновение, потому что восток есть не у одного континента.

Что говорит о сокращениях сама база IANA

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

Некоторые со временем убрали именно как выдумки. Пояса, некогда носившие придуманные трёхбуквенные коды, теперь сообщают числовую форму вроде +0545 — именно потому, что придуманное сокращение хуже честного смещения.

То же редакторское суждение — что правдоподобная выдумка хуже признания пробела — применяет и этот сайт. Поэтому в колонке сокращений на странице Токио стоит UTC+9, а не JST.