momentjs endOf(‘месяц’) не доставляет последний день месяца

#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()