Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как прибавить к дате дни, месяцы или часы

Короткий ответ

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

Функции из этого ответа

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.