Почему 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.