Счётчик дат помогает быстро узнать, сколько календарных или рабочих дней разделяет две даты, а также вычислить дату через нужное число дней от выбранного начала. На странице три блока: разница между датами, подсчёт рабочих дней и сдвиг даты на заданное смещение.
Счётчик дат — это инструмент, который переводит две календарные даты в целое число дней и обратно. Даты удобно представлять как номер дня относительно фиксированной точки отсчёта: тогда любая разница становится обычным вычитанием, а прибавление срока — сложением.
Отсчёт дней не зависит от длины месяца и високосных лет: если он корректно задан для каждой даты, то разница получается автоматически. Поэтому ручные ошибки с «тридцатью днями в феврале» исключены.
Здесь d1 и d2 — номера дней, соответствующие датам начала и окончания. Модуль убирает знак: результат не зависит от того, какая дата введена первой. Полные недели получают делением числа дней на семь с округлением вниз.
В расчётах по договорам, отчётности и срокам важны не календарные, а рабочие дни. Рабочими считаются дни с понедельника по пятницу, попадающие в интервал от начальной даты включительно до конечной не включительно. Выходные автоматически пропускаются.
Обратная задача — получить дату, которая наступит через заданное число дней. К номеру начального дня прибавляют смещение; отрицательное значение переносит результат в прошлое. Этот приём используют при планировании платежей, отпусков и контрольных сроков.
Пример 1. Между 1 января 2026 года и 31 января 2026 года лежит 30 календарных дней, то есть 4 полных недели.
Пример 2. Рабочая неделя с 5 по 12 января 2026 года содержит 5 рабочих дней: понедельник, вторник, среду, четверг и пятницу.
Пример 3. Через 45 дней после 1 января 2026 года наступает 15 февраля 2026 года.
Какая дата наступит после сдвига от 1 января 2026 года
| Смещение | Итоговая дата |
|---|---|
| +30 дней | 31.01.2026 |
| +45 дней | 15.02.2026 |
| +90 дней | 01.04.2026 |
| −1 день | 31.12.2025 |
Ничего специального: результат берётся по модулю, поэтому разница всегда неотрицательна. Меняя даты местами, вы получите то же число дней.
Блок рабочих дней считает только выходные, то есть субботу и воскресенье. Официальные праздники в разных странах отличаются, поэтому их стоит проверять отдельно.
Для этого удобнее календарные месяцы и годы: сначала определяют полные месяцы между датами, затем остаток в днях. Количество дней подскажет, сколько осталось сверх целых месяцев.
Интервал берётся как [d1, d2): начальный день входит, конечный нет. Так результат не дублируется при стыковке соседних периодов.