Мое одностраничное приложение javascript извлекает данные в формате JSON с помощью вызовов REST. Даты форматируются с использованием часового пояса UTC в стандартном формате ISO8601, например 2011-02-04T19:31:09Z
.
При регистрации в сервисе пользователи выбирают свой часовой пояс из раскрывающегося списка. Этот часовой пояс может отличаться от часового пояса браузера пользователя. Приложение javascript всегда знает, какой часовой пояс выбран пользователем.
Я знаю, как преобразовать строку UTC в дату. Я понимаю, что Javascript представляет даты только в местном часовом поясе.
Но у меня возникли проблемы с выяснением как отображать дату, отформатированную для часового пояса, ДРУГОГО, чем локальный часовой пояс пользователя. Он должен учитывать летнее время на все даты. Внутренне я хочу обрабатывать все даты как UTC и преобразовывать только в строковое представление даты в другом часовом поясе во время отображения. Мне нужно отображать даты в часовом поясе, выбранном в профиле пользователя, а не в часовом поясе его браузера.
Я экспериментировал с сервером, отправляющим разницу смещения часового пояса в миллисекундах между часовым поясом браузера пользователя и часовым поясом профиля пользователя. Но я обнаружил, что не могу просто отправить одно значение смещения, но мне нужно отправить смещение для каждой даты, чтобы учесть различия в летнем времени.
Любые предложения или пример кода о том, как отображать даты, отформатированные в разных часовых поясах? Варианты, которые я нашел до сих пор:
- Сервер отправляет даты в виде строк, уже отформатированных в правильном часовом поясе, и на клиенте не выполняется синтаксический анализ или манипуляции с датой. Это затрудняет выполнение определенных действий на клиенте, если не делает невозможным.
- Используйте такую библиотеку, как https://github.com/mde/timezone-js, которая включает всю базу данных Olson TZ в Javascript. Это означает более длительное время загрузки, большее использование памяти и т. Д.
- Отправляйте значение timezoneOffsetMillis с каждой датой, отправленной клиенту. Это приводит к беспорядочным данным JSON и неоптимальным интерфейсам REST.
Есть ли более простые или лучшие решения?