Форматирование времени GMT как CET с помощью AngularMoment

#angularjs #date #datetime #momentjs

#angularjs #Дата #дата и время #momentjs

Вопрос:

Я пытаюсь отформатировать временную метку unix, которая находится в GMT, как время в CET.

Итак, дата в моем json-файле 1404896400 -> Ср, 09 июля 2014 г. 09:00:00 по Гринвичу. Я хотел бы отобразить это в своем приложении как Ср, 09 июля 2014 09:00:00 CET ( 2).

Я не хочу, чтобы браузер компенсировал мой часовой пояс (CET), поэтому дата отображается как 11:00. Я хочу, чтобы оно отображалось в моем браузере как 9.00.

Я использую AngularMoment, который является угловой реализацией Moment.js .

Я пытаюсь выяснить из документации, как я могу это сделать, но я застрял и не могу заставить его работать.

Я попытался установить свой часовой пояс на Europe, установив константу:

 .constant('angularMomentConfig', {
  preprocess: 'unix', // optional
  timezone: 'Europe/Amsterdam' // optional
})
  

Затем с помощью фильтра amDateFormat в моем шаблоне:

 {{symposium.content.first_talk.content.date_and_time | amDateFormat:'h:mm'}}
  

Но время отображается как 11:00. Как я могу заставить его отображаться как 9:00?

Комментарии:

1. Вы видели часть в readme , начинающуюся с «Не забудьте включить moment-timezone.js

2. Вы, конечно, правы — я отстой в чтении. Спасибо. Еще один вопрос: при установке часового пояса на Europe / Amsterdam время теперь отображается как 10.00. Есть идеи, почему он вычитает 1 час вместо 2, как должно?

3. Для какого значения? В настоящее время Амстердам находится на CEST (UTC 2), но зимой он находится на CET (UTC 1). Подробности здесь .

4. Точно — но в настоящее время оно равно CEST 2, но когда я форматирую 1404896400 (9 GMT) с помощью этого формата amDateFormat, результат равен 10:00. Поскольку сейчас летнее время, не следует ли вычесть 2 часа?

Ответ №1:

Из модуля чтения углового момента:

Не забудьте включить moment-timezone.js в свой проект, иначе функциональность пользовательского часового пояса будет недоступна. Вам также потребуется включить файл данных часового пояса, который вы можете создать с помощью построителя данных часового пояса …

Вы можете увидеть пример jsfiddle здесь .Я загрузил встроенную форму данных часового Europe/Amsterdam пояса, и вы можете видеть, что она действительно настраивается на UTC 2 для CEST.