Подтвердить что ты не робот

Установить глобальный часовой пояс

Я использую Moment.js для обработки дат в моем веб-приложении. Сервер возвращает все даты в миллисекундах по UTC. Теперь мне нужно отобразить даты применения определенного часового пояса (в зависимости от настроек пользователя).

Есть ли способ установить часовой пояс глобально вместо изменения всех вызовов на моменты для его обработки?

4b9b3361

Ответ 2

Используйте библиотеку времени-времени, найденную на том же сайте: http://momentjs.com/timezone/ Это позволяет вам делать такие вещи, как:

moment(utcDateTime).tz(settings.timezone).format(settings.dateFormat);

Я рекомендую реализовать пользовательский класс/объект, который имеет функцию обслуживания для перевода UTC в пользовательский часовой пояс. Посмотрите на эту скрипку:

http://jsfiddle.net/guidosch/ofd4unhu/4/

Даты выполняются как UTC, но в представлении используется метод форматирования даты класса пользователя для настройки и форматирования даты UTC в соответствии с предпочтениями пользователя.

Ответ 3

Запуская эту проблему в прошлом, моим решением было создать момент factory, который предоставил моментальные объекты с базовой конфигурацией. Вы можете сделать это прозрачным, как требующий момента, - ссылаясь на ваш пакет и используя класс точно так же, как момент, - но на самом деле вы вызываете объект-оболочку момента, который обеспечивает моментальные реализации с выбранным временем.

Ответ 4

Я не проводил тщательного тестирования, но он выглядит правильно на поверхностных тестах. Я смог сделать это с помощью Moment Timezone 0.0.1:

var serverTimezoneOffset = <?php echo timezone_offset_get(new DateTimeZone(date_default_timezone_get()), new DateTime('now')) / -60; ?>;
moment.updateOffset(new Date().getTimezoneOffset()-serverTimezoneOffset);