#node.js #momentjs
#node.js #momentjs
Вопрос:
Когда я вызываю следующий код
moment('2020-01-01T00:00:00Z').endOf('month').utc().format()
Я получаю результат
'2020-01-01T07:59:59Z'
когда я ожидал увидеть
'2020-01-31T23:59:59Z'
Это ошибка или я неправильно использую API?
Комментарии:
1. Я только что попробовал на их официальном сайте momentjs.com Это работает. Какую версию вы используете?
2. Похоже, проблема со смещением часового пояса или ошибка, используемая библиотекой, я пробовал с моим (-120) Это работает! Я пробовал с вашим (480), это не работает. Все еще проверяет
3. Я использую версию 2.22.2
4. Я только что обновился до 2.24.0, и у меня все еще та же проблема.
Ответ №1:
Я думаю, проблема в том, что вы использовали endOf
перед преобразованием даты в UTC.
Вы передаете эту дату: 2020-01-01T00:00:00Z
но браузер понимает это с вашим часовым поясом, поэтому «реальная дата» является 2019-12-31T15:00:00Z
.
Поэтому вы должны сначала преобразовать его в UTC, а затем продолжить изменение / вызов / и т.д.
Итак, я попробовал это, и это сработало! Скажите мне, сохраняется ли проблема.
moment('2020-01-01T00:00:00Z').utc().endOf('month').format()