Как прибавить к дате дни, месяцы или часы
Короткий ответ
setDate() с текущим днём плюс N сдвигает дату вперёд и сам переходит на следующий месяц:
const date = new Date(2025, 0, 29);
date.setDate(date.getDate() + 5);
console.log(date.toDateString());Результат:
Mon Feb 03 2025Не меняя исходную
Сеттеры меняют сам объект даты. Сначала сделайте копию:
const addDays = (date, days) => {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
};
const today = new Date(2025, 5, 10);
const nextWeek = addDays(today, 7);
console.log(today.getDate(), nextWeek.getDate());Результат:
10 17Месяцы и годы
setMonth() и setFullYear() работают так же:
const date = new Date(2025, 10, 15);
date.setMonth(date.getMonth() + 3);
console.log(date.toDateString());Результат:
Sun Feb 15 2026Часы и минуты
Для часов и минут используйте setHours() и setMinutes():
const date = new Date(2025, 0, 1, 22, 30);
date.setHours(date.getHours() + 3);
console.log(date.toDateString(), date.getHours() + ':' + date.getMinutes());Результат:
Thu Jan 02 2025 1:30Частая ошибка
Прибавление месяца к 31 января даёт март, а не конец февраля, потому что 31 февраля переходит дальше:
const date = new Date(2025, 0, 31);
date.setMonth(date.getMonth() + 1);
console.log(date.toDateString());Результат:
Mon Mar 03 2025Функции из этого ответа
- Date.prototype.setDate — Устанавливает день месяца — удобно прибавлять и вычитать дни.
- Date.prototype.getDate — Возвращает день месяца.