Комментарии 14
Реализовать что сложнее простого форматирования времени и вычисления даты с комплексными операциями (функции календаря) было чрезвычайно трудным делом.
и систему договорились назвать UTC, чтобы по буквам из обоих предложенных вариантов (C, T и U)
?
Update: даже нет, вообще указано +2 от Москвы.
Мне кажется, ни один текст про часовые зоны не может обойтись без этого эмоционального видео.
Ну и на сладкое — понимание всех проблем, описанных в статье + секунды координации, ведут к тому, что пересказать точное время в бедующем практически не реально.
Объект Date включает в себя toString(), toLocaleString() и их методы расширения. Но пользы от них мало, поскольку они используются, в основном, для возвращения строк на основе местного часового пояса, причём возвращаемые значения зависят от браузера и ОС.
Браузер и ОС как раз используют базу IANA, а Date.toLocaleString() позволяет указать timezone в формате IANA (а соответственно представить время в любой TZ). Так что метод очень даже полезный.
Moment — отработанная JavaScript-библиотека, почти ставшая стандартом.
В Java была JodaTime, которая тоже таскала с собой свой tzdata. И основной недостаток — это когда меняется tzdata (иногда правительство устраивает такой геморрой своим гражданам), приходится следить за всеми обновлениями и каждый раз выпускать новую версию софта. Тогда как системный tzdata приходит клиенту автоматически с обновлениями ОС.
Значение -540 означает, что часовой пояс на 540 минут опережает целевой. Обратите внимание на минус, хотя смещение Сеула содержит плюс (+09:00). Не знаю, почему, но отображается именно так.
Там минус потому что это значение разницы между локальным временем и UTC.
Ещё одна особенность в том, что этот метод не про информацию о часовом поясе в объекте на котором он вызывается, а про локальную для системы. И это метод не статичный потому что он возвращает разницу на основе информации про день, месяц и год на объекте даты на котором вызван (чувствуется нехватка разных объектов Date, Time и DateTime в JS).
По факту, с помощью этого метода можно узнавать историческую и текущую информацию о разнице между часовым поясом в хосте и UTC.
Меньше, приятнее в работе, современнее.
Спасибо за статью. Полезная информация вводная по устройству часовых поясов и опыте работе с ними.
Работа с часовыми поясами в JavaScript