Калькулятор 6 месяцев от даты
Укажите количество месяцев и дату отсчёта — калькулятор вычислит итоговую дату и количество дней до неё.
Логика вычислений
Калькулятор прибавляет к дате отсчёта заданное количество месяцев и возвращает итоговую дату, день недели и число дней до неё. Сначала к месяцу даты отсчёта прибавляется нужное число месяцев:
M_ит = M_нач + N
где:
- M_ит — порядковый номер итогового месяца (с переносом в следующие годы);
- M_нач — месяц даты отсчёта;
- N — количество прибавляемых месяцев.
Год итоговой даты берётся из этого же сдвига: каждые 12 месяцев увеличивают год на единицу. День месяца сохраняется тем же, что и у даты отсчёта, но не может превышать число дней в итоговом месяце — поэтому день обрезается до последнего дня месяца (например, 31 января + 1 месяц даёт 28 или 29 февраля):
D_ит = min(D_нач, D_посл)
где:
- D_ит — день итоговой даты;
- D_нач — день даты отсчёта;
- D_посл — последний день итогового месяца (28, 29, 30 или 31).
Число дней между датой отсчёта и итоговой датой считается как разница двух дат в днях:
ΔД = (T_ит − T_нач) / 86400
где:
- ΔД — количество дней до итоговой даты, дн.;
- T_ит, T_нач — итоговая дата и дата отсчёта, выраженные в секундах;
- 86400 — число секунд в сутках, для перевода разницы в дни.
День недели итоговой даты определяется по самой дате (понедельник — воскресенье) и выводится вместе с итоговой датой и числом дней.
Примеры расчётов
| Дата отсчёта | Месяцев N | Итоговая дата | День недели | Дней до даты, дн. | Комментарий |
|---|---|---|---|---|---|
| 19.06.2026 | 6 | 19.12.2026 | суббота | 183 | Базовый случай: 6 месяцев от сегодняшней даты, день месяца сохраняется. |
| 15.12.2025 | 3 | 15.03.2026 | воскресенье | 90 | Переход через Новый год: 12 + 3 = 15 → месяц 3 следующего года. |
| 31.01.2026 | 1 | 28.02.2026 | суббота | 28 | Обрезка дня: D = min(31, 28), в феврале нет 31-го числа. |
| 31.01.2024 | 1 | 29.02.2024 | четверг | 29 | Високосный год: D = min(31, 29) даёт 29 февраля. |
| 28.02.2026 | 12 | 28.02.2027 | воскресенье | 365 | Ровно год (12 месяцев): год +1, дата та же. |
| 30.08.2026 | 18 | 29.02.2028 | вторник | 548 | Большой сдвиг: 8 − 1 + 18 = 25 → +2 года, и обрезка до 29.02 (високосный 2028). |
