2017-02-07 5 views
1

Вот мой код:Почему данная переменная date неверна?

var moment = require("moment"); 

var day = 31; 
var month = 12; 
var year = 2016; 
moment().date(day).month(month - 1).year(year) 

дата, которая возвращается в Sat Dec 03 2016 16:23:43 GMT-0700 (MST).

Почему дата конвертируется в 03 вместо 31?

+0

«Если вы связываете несколько действий для создания даты, вы должны начать с года, затем месяца, затем дня и т. Д. В противном случае вы можете получить неожиданные результаты» https://momentjs.com/docs/ –

+0

Если вы сделать дату на 31 декабря и вычесть месяц, какова должна быть дата? 31 ноября нет. – RobG

+0

@RobG 'moment(). Year (2016) .month (11) .date (31) .month (10)' возвращается 30 ноября 2016 года. Он обрабатывается хорошо. –

ответ

1

Эта строка обрабатывается в несколько этапов: moment().date(day).month(month - 1).year(year)

Первое: moment().date(31)

В настоящее время 7 февраля, 2017. Мы меняем его на «31 февраля 2017», который обтекает по 3 марта с февраля - всего 28 дней.

Затем он изменяет месяц до 12, а год к 2016 году

Флип шаги вокруг. Сделайте первый год, затем месяц, затем дату.

 Смежные вопросы

  • Нет связанных вопросов^_^