Правило сдвига на месяцы
Месяц и год исходной даты объединяют в один порядковый номер: 12 · год + месяц − 1. К нему прибавляют число месяцев, а затем снова делят на 12, получая новые год и месяц. День месяца сохраняется, пока такой день существует в итоговом месяце.
Если в итоговом месяце меньше дней, берётся последний день месяца. Поэтому 31 января плюс месяц даёт 28 февраля в обычном году и 29 февраля в високосном; 30 января плюс месяц ведёт к тому же результату, а 31 марта плюс месяц даёт 30 апреля.
Сдвиг назад работает по тому же правилу с отрицательным числом. Например, 31 марта 2026 минус один месяц — это 28 февраля 2026, поскольку 31 февраля не существует.
Месяцы и дни: в чём разница
Сдвиг на фиксированное число дней всегда сдвигает дату ровно на столько суток. Сдвиг на месяц сохраняет число месяца, а число суток между исходной и итоговой датой меняется: от 28 до 31 для одного месяца. От 1 января плюс один месяц получится 1 февраля, это 31 день; от 1 февраля — 1 марта, это 28 или 29 дней.
Накопленная разница особенно заметна на больших сроках. Двенадцать месяцев всегда дают то же число следующего года, то есть 365 или 366 дней, а шесть месяцев — от 181 до 184 дней в зависимости от начальной даты.
Если важно число суток, лучше считать в днях. Если важна календарная привязка к числу месяца, как при ежемесячных платежах, подходит сдвиг на месяцы.
Примеры с граничными случаями
Гарантия 18 месяцев с покупки 15 августа 2026 года заканчивается 15 февраля 2028 года по календарному правилу: число 15 есть во всех месяцах, и корректировка не нужна. Результат такой же, как если бы сначала прибавить год, а затем ещё шесть месяцев.
Подписка, оформленная 29 февраля 2024 года на 12 месяцев, сдвигается на 28 февраля 2025 года, потому что 29 февраля 2025 не существует. Через четыре года от той же даты, то есть 48 месяцев, получится 29 февраля 2028 года, поскольку 2028 год високосный.
Срок «6 месяцев с 30 мая» заканчивается 30 ноября, а «9 месяцев с 30 мая» — 28 февраля, так как в феврале 30 числа нет. Эти примеры показывают, почему на конце месяца полезно проверять результат, а не полагаться на «примерно».
Необратимость и накопление ошибки
Правило конца месяца необратимо. Прибавим один месяц к 31 января и получим 28 февраля, вычтем один месяц из 28 февраля и получим 28 января, а не 31. Информация о последнем дне теряется при сдвиге.
Поэтому цепочку ежемесячных платежей нужно строить всегда от одной исходной даты, прибавляя 1, 2, 3 и так далее месяцев, а не последовательно сдвигая предыдущую дату. Тогда платёж, назначенный на 31 число, в коротких месяцах попадает на последний день, а в длинных возвращается на 31.
То же относится к вычитанию: чтобы найти дату начала по концу срока, считайте от конечной даты сразу на нужное число месяцев назад и учитывайте возможные различия.
Что калькулятор не учитывает
Арифметика календаря — только часть вопроса. В договорах и нормативных актах бывают специальные правила: считается ли срок со следующего дня после начала, включается ли последний день, переносится ли окончание на ближайший рабочий день, если срок приходится на выходной. Эти правила калькулятор не применяет.
Такие нюансы нужно читать в тексте договора или в профильных нормативных актах. Для расчёта в рабочих днях можно воспользоваться отдельными калькуляторами, где нерабочие даты вводятся явно.
Календарь здесь григорианский, без часовых поясов и без времени суток. Если срок привязан к моменту времени, например к 23:59 в определённом часовом поясе, этот вопрос решается отдельно.
Формула расчёта
N = 12 · год + месяц − 1 + m; новый год = ⌊N / 12⌋; новый месяц = N mod 12 + 1; день = min(исходный день, длина нового месяца)
Проверенные примеры
Какая дата будет через 1 месяц после 31 января 2026 года?
Номер месяца сдвигается на февраль 2026 года. В феврале 28 дней, а исходный день равен 31, поэтому берётся последний день месяца: 28 февраля 2026 года.
Товар куплен 15 августа 2026 года, гарантия 18 месяцев. До какой даты она действует по календарному правилу?
Август 2026 плюс 18 месяцев — февраль 2028 года. Число 15 есть в феврале, поэтому получается 15 февраля 2028 года. Включать ли последний день в срок, определяет договор.
Как пользоваться онлайн-калькулятором
- Выберите исходную дату в календаре.
- Введите число месяцев; для сдвига в прошлое используйте отрицательное значение.
- Нажмите «Рассчитать»: день месяца сохраняется, а при его отсутствии в итоговом месяце берётся последний день.