Калькулятор: сколько дней осталось
Считает, сколько дней осталось до указанной даты (или сколько дней прошло). Начальная дата по умолчанию — сегодня.
Логика вычислений
Калькулятор определяет, сколько дней между начальной и конечной датами. Если конечная дата позже начальной — это дни «до даты», если раньше — дни, которые уже прошли. По умолчанию начальной датой считается сегодняшний день. На основе разницы в днях рассчитываются ещё три величины: число недель, количество рабочих дней (пн–пт) и разбивка интервала на годы, месяцы и дни.
Сначала вычисляется целое число дней между датами. Время суток не учитывается — берутся только календарные даты:
D = (T_к − T_н) / 86 400 000
где:
- D — разница в днях (со знаком: плюс — дата впереди, минус — дата прошла), дн;
- T_н, T_к — начальная и конечная даты, выраженные в миллисекундах от начала отсчёта;
- 86 400 000 — число миллисекунд в одних сутках (24 × 60 × 60 × 1000).
Для всех остальных величин используется модуль разницы, то есть абсолютное число дней без учёта знака:
D_абс = |D|
где:
- D_абс — абсолютное число дней между датами, дн.
Число недель — это количество дней, делённое на семь:
W = D_абс / 7
где:
- W — число недель в интервале, нед.
Рабочие дни считаются перебором всех суток интервала: каждый день проверяется по дню недели, и в счёт идут только понедельник–пятница, а суббота и воскресенье отбрасываются:
D_раб = (число суток интервала, выпавших на пн–пт)
где:
- D_раб — количество рабочих дней (пн–пт) в интервале, дн.
Наконец, интервал раскладывается на годы, месяцы и дни. Сначала берётся разность по годам, месяцам и числам месяца; если день конечной даты меньше дня начальной, занимается один месяц (к дням добавляется длина предыдущего месяца), а если после этого месяцев получилось меньше нуля — занимается один год (к месяцам прибавляется 12):
D_абс → (Y лет, M месяцев, d дней)
где:
- Y — число полных лет в интервале, лет;
- M — число полных месяцев сверх лет, мес (от 0 до 11);
- d — число дней сверх полных месяцев, дн.
Примеры расчётов
| Начальная дата | Конечная дата | Разница D, дн | Недели W, нед | Рабочие дни D_раб, дн | Годы/месяцы/дни | Результат | Комментарий |
|---|---|---|---|---|---|---|---|
| 19.06.2026 | 26.06.2026 | +7 | 7 ÷ 7 = 1,0 | 5 | 0 л 0 мес 7 дн | 7 дней до даты | Ровно одна неделя вперёд; в неё попадают 5 будних дней. |
| 19.06.2026 | 19.07.2026 | +30 | 30 ÷ 7 ≈ 4,29 | 21 | 0 л 1 мес 0 дн | 30 дней до даты | Целый календарный месяц; разложение даёт ровно 1 месяц. |
| 01.06.2026 | 31.12.2026 | +213 | 213 ÷ 7 ≈ 30,43 | 153 | 0 л 6 мес 30 дн | 213 дней до даты | Полгода с хвостом; день конца меньше дня начала — занят месяц. |
| 01.01.2026 | 01.01.2027 | +365 | 365 ÷ 7 ≈ 52,14 | 261 | 1 г 0 мес 0 дн | 365 дней до даты | Ровно один невисокосный год. |
| 19.06.2026 | 19.06.2024 | −730 | 730 ÷ 7 ≈ 104,29 | 522 | 2 г 0 мес 0 дн | 730 дней прошло | Конец раньше начала — знак минус, дата уже в прошлом. |
| 01.02.2020 | 19.06.2026 | +2330 | 2330 ÷ 7 ≈ 332,86 | 1664 | 6 л 4 мес 18 дн | 2330 дней до даты | Длинный интервал через несколько лет, включая високосные. |
