Расчет месяцев между датами
Показываем, как сделать расчет месяцев между двумя датами: точный календарный метод, разбор 31-го числа, примеры и формулы для оценки.
Показываем, как сделать расчет месяцев между двумя датами: точный календарный метод, разбор 31-го числа, примеры и формулы для оценки.
Что обычно подразумевают под «расчетом месяцев»
Под запросом «расчет месяцев» чаще всего понимают один из двух вариантов:
- Календарные месяцы (точные полные месяцы) – сколько полных календарных месяцев прошло между датами.
- Оценка в месяцах (приближенно) – перевод разницы в днях в “месяцы” через среднюю длину месяца.
Выбор способа критичен: для большинства задач “по календарю” нужен первый вариант, а для быстрых оценок – второй.
Точный расчет календарных месяцев: пошаговый алгоритм
Ниже – логика, которой пользуются хорошие калькуляторы и которую удобно повторить вручную.
Шаг 1. Проверьте порядок дат
- Если конечная дата меньше начальной – меняйте их местами и затем меняйте знак результата (получится отрицательная разница).
Шаг 2. Посчитайте разницу по “год-месяц”
Вычислите предварительное число месяцев:
months = (год_2 − год_1) * 12 + (месяц_2 − месяц_1)
Шаг 3. Уточните по дню месяца
- Представьте, что вы прибавляете
monthsк начальной дате по календарным правилам. - Если получившаяся “кандидатная” дата оказалась позже конечной – значит, вы пересчитали: уменьшите
monthsна 1. - Если кандидатная дата равна или раньше конечной – результат
monthsверен.
Как прибавлять месяцы, если день “не помещается”
Когда стартовый день – 29/30/31, а целевой месяц короче, день переносится на последний допустимый день целевого месяца.
Например: 31 января + 1 месяц → 28 (или 29) февраля.
Такой подход дает именно количество полных календарных месяцев между датами.
Примеры расчета
Пример 1: обычные даты
- Начальная: 15 января 2026
- Конечная: 14 апреля 2026
Предварительно по год-месяц: январь → апрель = 3 месяца.
Проверяем: если добавить 3 календарных месяца к 15 января, получаем 15 апреля 2026, а это позже 14 апреля.
Значит полный месяц не завершился, ответ: 2 месяца.
Пример 2: старт 31-го числа (короткий месяц)
- Начальная: 31 января 2026
- Конечная: 28 февраля 2026
Предварительно: январь → февраль = 1 месяц.
Прибавление 1 месяца к 31 января дает 28 февраля 2026 (последний день февраля).
Проверка проходит, поэтому результат: 1 месяц.
Приближенный расчет в месяцах по дням (для оценок)
Если вам не нужен “строгий календарь”, можно перевести дни в месяцы приближенно:
- Считаете разницу в днях:
D - Делите на среднюю длину месяца:
- месяцы ≈ D / 30,44
Число 30,44 – это усреднение на основе годовой продолжительности (около 365,25 дней), поэтому метод подходит для предварительных оценок, а не для точного учета периодов “по календарю”.
Как выбрать правило для вашей задачи
- Платежи, сроки, отпуск, регламентированные периоды – чаще требуют календарного подхода (полные месяцы + возможно остаток дней).
- Планирование, прогнозы, аналитика – часто достаточно приближенного перевода “дней в месяцы”.
- Если в задаче важны точные границы (например, когда именно “заканчивается” месяц), используйте календарный метод из раздела выше.
Полезные советы и типичные ошибки
- Не путайте “месяц” и “30 дней”: календарные месяцы не равны друг другу по длине.
- Проверяйте расчет через прибавление: прибавьте найденное число месяцев к стартовой дате и сравните с конечной.
- Учитывайте короткие месяцы (февраль, месяцы на 30 дней): день может “поджиматься” к последнему числу месяца.
- Уточняйте правило при включении/исключении границ: иногда в задачах под “количеством месяцев” понимают полные месяцы, а иногда – количество календарных месяцев в диапазоне. Если видите расхождения, первым делом сверяйте трактовку.
При необходимости вы можете выполнить расчет месяцев в удобном онлайн-калькуляторе, который считает интервал по выбранным датам и (при настройках) дополнительно показывает дни/годы и другие представления результата.