#javascript #date
Вопрос:
Привет всем. Можете ли вы помочь мне с такого рода вопросом? Я хочу добавить дни в строку даты, поэтому код выглядит примерно так.
var date = new Date() date.setDate(date.getDate() 1)
Проблема в том, что я хочу изменить только дни без месяца, лет или времени (чм). Так, например, если у меня есть дата 31 декабря 2021 года, и я увеличиваю день на один, я хочу получить 01 декабря 2021 года, а не 01 января 2022 года. Возможно ли это в JS?
Ответ №1:
Вам просто нужно будет вручную проверить и настроить, если это необходимо. Вот пример функции:
var date = new Date('12/31/2021'); incremenetLoopingDate(date); console.log(date); function incremenetLoopingDate(date){ var mo = date.getMonth(); date.setDate(date.getDate() 1); if(date.getMonth() !== mo){ date.setMonth(mo); } return date; }
Комментарии:
1.
date.setDate(1)
Действительно ли это необходимо? Я бы предположил, что при увеличении в следующем месяце число месяца будет равно 1 в качестве побочного эффекта.2. @JakobLovern Да, ты прав.
Ответ №2:
Похоже на другой ответ, но проще. Просто проверьте, равна ли увеличенная дата 1, и если да, установите значение предыдущего месяца. Обратите внимание, что это изменяет прошедшую дату.
function incrementMonthLoop(date = new Date()) { date.setDate(date.getDate() 1); if (date.getDate() == 1) date.setMonth(date.getMonth() - 1); return date; } console.log( incrementMonthLoop(new Date(2021, 11, 31)).toDateString() );