Форматировщик Momenjs изменяет время с 00 до 03 часов

#javascript #momentjs

#javascript #momentjs

Вопрос:

Почему moment("2020-08-26T00:00:00Z").format('DD.MM.YYYY HH:mm:ss Z') выдает «26.08.2020 03:00:00 03:00″. Я понимаю добавление текущего часового пояса, но почему время тоже меняется?

пример jsbin здесь

Ответ №1:

В формате ISO 8601 «Z» в конце обозначает часовой пояс UTC 0. 2020-08-26T00:00:00Z поэтому означает то же самое, что и 2020-08-26T00:00:00 00:00 .

Если вы хотите использовать другой часовой пояс в конструкторе, укажите его явно:

 moment('2020-08-26T00:00:00 03:00').format('DD.MM.YYYY HH:mm:ss Z')
//                         ^^^^^^
// if the user agent's timezone is UTC 3,
// this will be formatted as "26.08.2020 00:00:00  03:00"
  

Если, с другой стороны, вы хотите создать дату-время UTC 0 и отформатировать его в UTC 0, игнорируя часовой пояс пользовательского агента, используйте это (согласно вашему комментарию):

 moment("2020-08-26T00:00:00Z").utc().format("DD.MM.YYYY HH:mm:ss Z")
//                            ^^^^^^
// this will _always_ be formatted as "26.08.2020 00:00:00  00:00"
  

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

1. Итак, проблема в неправильном формате.. Спасибо! moment("2020-08-26T00:00:00Z").utc().format("DD.MM.YYYY HH:mm:ss Z") решил это. (Я получаю дату из серверной части в этом формате)

2. Ваш ответ ориентирован на часовой пояс, но меня смутили неправильные часы. Ты все равно мне помог

3. @Kseniia Я думаю, что, возможно, я неправильно понял вопрос. Я отредактировал ответ, чтобы включить ваше решение.