Калькулятор месяцев
Считает количество полных месяцев и оставшихся дней между двумя датами.
Логика вычислений
Калькулятор определяет, сколько полных месяцев и сколько оставшихся дней укладывается между начальной и конечной датами. Сначала считается число полных месяцев, затем — остаток в днях, который не дотянул до ещё одного полного месяца.
Число полных месяцев берётся как разница календарных месяцев между датами, при этом каждый год даёт 12 месяцев:
M = (Г_к − Г_н) × 12 + (М_к − М_н)
где:
- M — число полных месяцев между датами, мес;
- Г_н, Г_к — год начальной и конечной даты;
- М_н, М_к — номер месяца (1–12) начальной и конечной даты;
- Д_н, Д_к — день месяца начальной и конечной даты.
Если в конечной дате число месяца меньше, чем в начальной (Д_к < Д_н), последний месяц ещё не завершён, поэтому из результата вычитается один месяц:
M = M − 1 (если Д_к < Д_н)
Чтобы найти остаток дней, к начальной дате прибавляется M полных месяцев — получается промежуточная дата, отстоящая от начала ровно на целое число месяцев. Если в этом месяце нет нужного числа (например, 31-го), день берётся последним днём месяца:
Д_пром = min(Д_н, Д_мес)
где:
- Д_пром — день промежуточной даты, отстоящей от начала на M месяцев;
- Д_мес — число дней в месяце промежуточной даты, дн.
Остаток дней — это разница между конечной и промежуточной датами:
D = Дата_к − Дата_пром
где:
- D — остаток дней сверх полных месяцев, дн;
- Дата_к — конечная дата;
- Дата_пром — промежуточная дата (начальная дата плюс M месяцев).
Итог калькулятор показывает в двух видах: отдельно число полных месяцев M и совмещённо — «M месяцев и D дней».
Примеры расчётов
| Начальная дата | Конечная дата | Полных месяцев M, мес | Остаток дней D, дн | Результат | Комментарий |
|---|---|---|---|---|---|
| 15.01.2024 | 15.04.2024 | (2024−2024)×12 + (4−1) = 3 | 0 | 3 мес 0 дн | Совпадает число месяца — ровно три полных месяца |
| 01.01.2024 | 31.12.2024 | (12−1) = 11 | 31.12 − 01.12 = 30 | 11 мес 30 дн | Почти полный год без одного дня |
| 10.03.2024 | 05.06.2024 | (6−3) = 3, Д_к<Д_н → −1 = 2 | 05.06 − 10.05 = 26 | 2 мес 26 дн | Число конечной даты меньше начальной — месяц вычитается |
| 31.01.2024 | 31.03.2024 | (3−1) = 2 | 0 | 2 мес 0 дн | Концы месяца совпадают — ровно два месяца |
| 31.01.2024 | 28.02.2024 | (2−1) = 1, Д_к<Д_н → −1 = 0 | 28.02 − 31.01 = 28 | 0 мес 28 дн | Граничный случай: в феврале нет 31-го, месяц не завершён |
| 15.06.2022 | 20.09.2024 | (2024−2022)×12 + (9−6) = 27 | 20.09 − 15.09 = 5 | 27 мес 5 дн | Период через несколько лет — каждый год даёт 12 месяцев |
| 30.01.2024 | 30.04.2024 | (4−1) = 3 | 0 | 3 мес 0 дн | Круглые числа, апрель из 30 дней — остатка нет |
