Время и датыДни между датами

Прибавить месяцы к дате

Как прибавить месяцы к дате: алгоритм расчёта, формула, примеры с числами и краевые случаи (31 января, 30 августа). Инструкция, Excel и онлайн-калькулятор.

15 июня 2025 года
Все калькуляторы раздела «Дни между датами» (106) →

Что значит «прибавить месяцы к дате»

Прибавить месяцы к дате — значит сдвинуть календарную точку вперёд на целое число месяцев, не привязываясь к фиксированной длине месяца в днях. Один месяц в этом контексте — не 30 или 31 день, а переход от одного числа к тому же числу следующего месяца. Если день в целевом месяце отсутствует, дата корректируется до последнего дня этого месяца.

Такой подход используют в договорах, бухгалтерии, планировании и программировании. Он отличается от простого сложения дней и требует отдельного алгоритма.

Алгоритм расчёта

Чтобы прибавить N месяцев к дате, выполните три шага:

  1. Разложите исходную дату на год, месяц и день.
  2. Прибавьте N к номеру месяца. Если результат превышает 12, увеличьте год на целое от деления на 12, а месяц замените остатком.
  3. Проверьте, существует ли исходный день в полученном месяце. Если нет — уменьшите день до последнего дня этого месяца.

Для вычитания месяцев N берут отрицательным.

Примеры ручного расчёта

Простой случай

Задача: 15 марта 2025 года + 3 месяца.

  • Месяц: 3 + 3 = 6 (июнь).
  • Год: 2025, без изменений.
  • День: 15 существует в июне.

Результат: 15 июня 2025 года.

Переход через год

Задача: 20 октября 2025 года + 5 месяцев.

  • Месяц: 10 + 5 = 15 → 15 − 12 = 3 (март), год увеличивается на 1.
  • Год: 2026.
  • День: 20 существует в марте.

Результат: 20 марта 2026 года.

Краевой случай: последние числа месяца

Задача: 31 января 2025 года + 1 месяц.

  • Месяц: 1 + 1 = 2 (февраль).
  • Год: 2025 (невисокосный).
  • День: 31 не существует в феврале → берём 28.

Результат: 28 февраля 2025 года.

Задача: 31 января 2024 года + 1 месяц.

  • Год високосный → февраль содержит 29 дней.

Результат: 29 февраля 2024 года.

Задача: 30 августа 2025 года + 1 месяц.

  • Сентябрь содержит 30 дней → день совпадает.

Результат: 30 сентября 2025 года.

Задача: 31 августа 2025 года + 1 месяц.

  • В сентябре 30 дней → 31-е число недоступно.

Результат: 30 сентября 2025 года.

Как работают программы и онлайн-калькуляторы

Программные реализации различаются в обработке краевых случаев.

  • Excel и Google Таблицы: функция ДАТАМЕС(дата; N) или EDATE(date, N) реализует алгоритм с усечением дня до последнего дня месяца. Например, EDATE(2025-01-31; 1) вернёт 2025-02-28.
  • JavaScript: объект Date при установке месяца через setMonth() может дать «переползание» на следующий месяц. Например, new Date(2025, 0, 31) (31 января) после setMonth(1) превратится в 3 марта, а не в 28 февраля. Для корректного результата нужно вручную проверять день и при необходимости устанавливать нулевой день следующего месяца.
  • Python (datetime): модуль dateutil.relativedelta корректно обрабатывает краевые случаи. Стандартный timedelta не приспособлен для месяцев, так как оперирует только днями.

Наш онлайн-калькулятор реализует классический алгоритм с усечением дня до последнего. Вычисления выполняются локально в браузере, без отправки данных на сервер.

Где применяется прибавление месяцев

  • Финансы и договоры: расчёт даты окончания гарантии, подписки, аренды.
  • Бухгалтерия: отложенные платежи, начисление процентов, сроки отчётности.
  • Планирование: контрольные точки проекта, повторяющиеся события.
  • Медицина: расчёт сроков беременности, даты родов.
  • Логистика: сроки доставки и хранения.
  • Разработка ПО: расчёт дат в календарных интерфейсах и планировщиках.

Частые ошибки

  • Сложение 30 дней вместо месяца. Месяцы имеют разную длину, и ошибка накапливается с каждым шагом.
  • Игнорирование високосных годов. При переходе через февраль результат может отличаться на день.
  • Путаница с порядком операций. Прибавление месяцев, а затем дней даёт не тот же результат, что прибавление дней, а затем месяцев.
  • Использование сырого setMonth() в JavaScript. Без проверки дня результат может оказаться неочевидным.

Часто задаваемые вопросы

Что будет, если прибавить месяц к 31 января?
В календаре нет 31 февраля, поэтому результат зависит от правила. В финансовой и бытовой практике последний день месяца переносят на последний день результирующего месяца: 31 января + 1 месяц = 28 (или 29) февраля. Если прибавлять месяцы на языке JavaScript без поправки, переполнение дней уйдёт на март.
Как прибавлять месяцы: по календарю или по среднему числу дней?
По календарю — прибавляется целое число календарных месяцев, а не фиксированное количество дней (30 или 30,44). День месяца остаётся тем же, если это возможно; если нет — день корректируется до последнего дня месяца.
Учитываются ли високосные годы при прибавлении месяцев?
Да, если результат попадает на февраль високосного года, итоговый день может быть 29, а не 28. Например, 31 января 2024 года + 1 месяц = 29 февраля 2024 года. Для 2025 года — 28 февраля.
Можно ли прибавить отрицательное количество месяцев?
Да, это эквивалентно вычитанию месяцев. Алгоритм тот же: прибавляется отрицательное число, происходит движение в обратную сторону по календарю. Краевые случаи работают симметрично.
Как эта операция считается в Excel?
В Excel используется функция ДАТАМЕС (EDATE). Она принимает начальную дату и количество месяцев (может быть отрицательным). Результат формируется по правилу «последний день месяца», если исходный день не существует в результирующем месяце.
Почему прибавление месяца к 30 января даёт 28 февраля?
Потому что 30 февраля не существует. При переходе через февраль в невисокосном году число дней ограничивается 28. Система автоматически подставляет максимально возможный день — 28-е число.
Как прибавить месяцы и дни одновременно?
Сначала прибавляют месяцы по календарному алгоритму, получая промежуточную дату. Затем к полученной дате прибавляют заданное количество дней. Порядок важен: прибавление дней до расчёта месяцев даст другой результат.