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