Алгоритм расчёта рабочих дней по производственному календарю
При расчёте сроков исполнения договоров, отпускных периодов, неустоек и процессуальных сроков в суде ключевое значение имеет точное разделение календарных и рабочих дней. В этом руководстве разбираем математический алгоритм фильтрации рабочих дней без перебора циклом и правила исчисления сроков по ГК РФ.
Математический алгоритм расчёта рабочих дней (O(1) без циклов)
while, увеличивая дату на 1 день и проверяя день недели. Для интервала в 50 лет такой подход неэффективен.Существует строгий аналитический алгоритм со сложностью O(1):
1. Вычисляется общее количество полных календарных недель:
fullWeeks = Math.floor(totalDays / 7)2. Каждая полная неделя гарантированно содержит ровно 5 рабочих дней:
businessDays = fullWeeks * 53. Для оставшихся дней (остаток от деления
totalDays % 7):Каждый день остатка проверяется по смещению от дня недели начальной даты. Если день не попадает на субботу (6) или воскресенье (0), счётчик рабочих дней увеличивается на 1.
Такой метод даёт мгновенный расчёт независимо от величины диапазона дат.
Полезный инструмент: Посчитать количество рабочих и календарных дней онлайн можно через калькулятор рабочих дней между датами.
Полезный инструмент: Для вычисления прожитых дней и точного возраста переходите в калькулятор точного возраста по дате рождения.
Правила исчисления сроков по Гражданскому кодексу РФ
1. День начала не считается: течение срока, определённого периодом времени, начинается на следующий день после календарной даты или наступления события (ст. 191 ГК РФ). Если договор заключён 1 июня на 10 дней, первым днём срока является 2 июня.
2. Правило переноса выходного дня: если последний день срока приходится на нерабочий день (суббота, воскресенье или официальный праздничный день), днём окончания срока считается ближайший следующий за ним рабочий день (ст. 193 ГК РФ).
3. Окончание срока: действие, для которого установлен срок, может быть выполнено до 24:00 часов последнего дня срока.
Високосные годы и календарная специфика
• Его номер делится на 4 без остатка;
• ИСКЛЮЧЕНИЕ: если номер года делится на 100, он НЕ високосный;
• ИСКЛЮЧЕНИЕ ИЗ ИСКЛЮЧЕНИЯ: если номер года делится на 400, он всё же високосный.
Примеры:
- 2024 год: високосный (делится на 4);
- 1900 год: невисокосный (делится на 100, но не на 400);
- 2000 год: високосный (делится на 400);
- 2026 год: невисокосный (365 дней).
Наш онлайн-инструмент «Разница между датами» учитывает все эти календарные правила автоматически.
Попробуйте онлайн-инструменты по этой теме
Используйте бесплатные утилиты Utilora прямо в браузере без регистрации:
Разница дат
Подсчёт количества дней, недель, месяцев и рабочих дней между двумя датами.
Запустить ▸Калькулятор возраста
Точный возраст в годах, месяцах, днях, часах, определение года рождения по возрасту (например, 46 лет) и таймер до дня рождения.
Запустить ▸Калькулятор процентов
Расчёт процента от числа, вычисление доли, прибавление и вычитание процентов, нахождение 100% по числу и проценту с быстрыми ставками (НДФЛ, НДС).
Запустить ▸Часто задаваемые вопросы (FAQ)
В нашем калькуляторе вы можете наглядно увидеть строгое количество прошедших суток между датами, а также включить или выключить граничные даты.
Базовый алгоритм рабочих дней отсекает регулярные еженедельные выходные (субботу и воскресенье). Государственные праздники регулируются ежегодно утверждаемым Правительством РФ производственным календарём.
Перейдите в инструмент «Разница дат онлайн» — он мгновенно выводит общее число дней, недель, месяцев и количество рабочих дней.