Попытка установить дату с помощью Moment.js и получить странные результаты

У меня очень простой цикл

console.log(thisStart);
console.log(thisEnd);
console.log(thisDate);
while(checkcounter < 10){
    console.log(checkcounter);
    thisDate = moment(thisDate,'MM/DD/YYYY').add(1,'days').toDate('MM/DD/YYYY');
    console.log(thisDate);
    checkcounter++;
}

Я ожидаю, что на следующий день я получу форматированный MM/DD/YYYY, но вместо этого первая итерация - это следующий день, но затем она скачет на 6 месяцев.

Будучи новым пользователем Momemnt.js, я не уверен, в чем я ошибаюсь

1 ответ

Решение

Проблема в утверждении внутри цикла:

thisDate = moment(thisDate,'MM/DD/YYYY').add(1,'days').toDate('MM/DD/YYYY');

Первая ошибка - передать строку формата moment конструктор, когда первый аргумент является Date объект. Как описано здесь, вам нужно передавать строку формата, только если первый аргумент является строкой, содержащей дату:

thisDate = moment(thisDate).add(1,'days').toDate('MM/DD/YYYY');

add вызов правильный, но doDate один нет. Функция toDate не берет на вход строку формата:

thisDate = moment(thisDate).add(1,'days').toDate();

Вот полный фрагмент кода:

var thisDate = new Date(),
    checkcounter = 0;

console.log('Init:', thisDate);
while (checkcounter < 10) {
    console.log('Check counter:', checkcounter);
    thisDate = moment(thisDate).add(1, 'days').toDate();
    console.log('thisDate:', thisDate);
    checkcounter++;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.js"></script>

Другие вопросы по тегам