Производственный календарь: расчёт календарных и рабочих дней
Данный инструмент позволяет выполнить расчёт количества дней в произвольном интервале дат с учётом официального производственного календаря РФ. Калькулятор автоматически детектирует календарные дни, рабочие дни, выходные и праздничные дни, а также суммарное рабочее время в часах для 40-часовой рабочей недели. Расчёт ведётся для периода с 01.01.1992 по 31.12.2026 с полной поддержкой всех утверждённых переносов праздников и предпраздничных сокращённых дней.
Как использовать калькулятор
Инструмент содержит два независимых функциональных модуля. Ну, или, проще говоря, две вкладки.
- Вкладка «Подсчёт дней между датами»: Укажите начальную и конечную даты периода. Выберите год календаря (опция «Авто» определяет год по датам периода). Принудительная фиксация года нужна, если праздничные переносы фактически относятся к другому году (например, январские каникулы). Отметьте флаги «Включать начальную дату» и «Включать конечную дату». При необходимости добавьте исключаемые периоды (например, командировки или отпуска). Результат отобразится автоматически: количество календарных дней, рабочих дней, выходных/праздников и рабочих часов (40-часовая неделя, с учётом сокращения предпраздничных дней на 1 час).
- Вкладка «Прибавить / вычесть дни»: Укажите опорную дату. Выберите операцию: прибавить или вычесть. Введите количество дней. Выберите тип дней: календарные или рабочие (расчёт ведётся с пропуском нерабочих дней). Итоговая дата отобразится крупным шрифтом.
Содержание
- Математическая модель расчёта
- Примеры расчёта
- Нормы рабочего времени (таблица для 2026 года)
- Часто задаваемые вопросы
Математическая модель расчёта
Расчёт базируется на пятидневной рабочей неделе (понедельник — пятница) с выходными днями — суббота и воскресенье. Честно говоря, всего несколько правил, но они покрывают все сложные случаи с переносами.
Базовые множества нерабочих дней:
- Фиксированные нерабочие праздничные даты (ст. 112 ТК РФ): 01.01–08.01 (Новогодние каникулы), 07.01 (Рождество), 23.02 (День защитника Отечества), 08.03 (Международный женский день), 01.05 (Праздник Весны и Труда), 09.05 (День Победы), 12.06 (День России), 04.11 (День народного единства).
- Субботы и воскресенья — автоматически считаются нерабочими.
- Перенесённые выходные — добавляются к нерабочим дням согласно постановлениям Правительства РФ.
- Рабочие субботы — исключаются из множества нерабочих дней.
- Предпраздничные сокращённые дни — фиксируются отдельно; продолжительность рабочего дня в них уменьшается на 1 час.
Алгоритм для вкладки «Подсчёт дней между датами»:
Пусть \( S \) — начальная дата, \( E \) — конечная дата, \( f_{start} \in \{0,1\} \) — флаг включения начальной даты, \( f_{end} \in \{0,1\} \) — флаг включения конечной даты. Тогда эффективный период:
\[ S_{eff} = S + (1 - f_{start})\ \text{(+1 день)} \] \[ E_{eff} = E - (1 - f_{end})\ \text{(–1 день)} \]Для каждой даты \( d \) в интервале \([S_{eff}, E_{eff}]\) проверяется: принадлежность к исключаемым периодам (если заданы) — такие даты пропускаются; является ли \( d \) нерабочим днём (множество \( N \) для заданного года); является ли \( d \) предпраздничным сокращённым днём (множество \( P \)).
Тогда:
\[ CalendarDays = \sum_{d = S_{eff}}^{E_{eff}} 1 \] \[ WorkingDays = \sum_{d = S_{eff}}^{E_{eff}} [d \notin N] \] \[ WeekendHolidayDays = CalendarDays - WorkingDays \] \[ PreHolidayCount = \sum_{d = S_{eff}}^{E_{eff}} [d \in P] \] \[ WorkingHours_{40h} = WorkingDays \times 8 - PreHolidayCount \]Алгоритм для вкладки «Прибавить / вычесть рабочие дни»:
Исходная дата \( D_0 \). Цель — найти дату \( D_k \), такую что количество нерабочих дней между \( D_0 \) и \( D_k \) (исключая \( D_0 \)) равно \( k \) при шаге \( step \in \{+1, -1\} \). Алгоритм итеративно двигается на 1 день в заданном направлении, проверяя каждую результирующую дату на принадлежность к \( N \). Дата считается найденной, когда счётчик рабочих дней достигает заданного числа \( k \).
Примеры расчёта
Пример 1. Расчёт продолжительности командировки
Один наш клиент как-то спросил: «А как посчитать командировку, если внутри неё был отзыв на день?». Всё просто: используем исключаемые периоды. Вот базовый случай. Сотрудник направлен в командировку с 12 мая 2025 г. по 25 мая 2025 г. включительно. Нужно определить количество календарных и рабочих дней.
- Начальная дата: 12.05.2025
- Конечная дата: 25.05.2025
- Флаги: включены обе даты
- Год календаря: Авто
Результат:
- Календарные дни: 14
- Рабочие дни: 10 (выходные 17–18, 24–25 мая)
- Выходные и праздники: 4
- Рабочие часы (40-ч): 80 ч. (10 × 8)
Дополнительно: если внутри периода есть исключаемый период (например, отзыв из командировки на 1 день), его можно добавить для точного учёта.
Пример 2. Дата окончания работ с учётом только рабочих дней
Подрядчик должен выполнить работы за 30 рабочих дней, начиная с 3 марта 2026 г. Требуется рассчитать дату завершения.
- Опорная дата: 03.03.2026
- Операция: Прибавить
- Количество дней: 30
- Тип дней: Рабочие
Результат: Дата события: 14.04.2026
Пояснение: с 03.03 по 14.04 — 30 рабочих дней. Калькулятор пропустил все субботы, воскресенья и праздничные дни (включая 08.03). При этом 30 апреля 2026 г. — предпраздничный сокращённый день, что влияет на расчёт часов, но не на счёт дней.
Нормы рабочего времени (таблица для 2026 года)
В практике мы часто видим, что бухгалтеры сверяются с помесячными нормами. Вот таблица для 2026 года — все данные официальные, с учётом переносов.
| Период | Рабочие дни | Выходные и праздники | Часы при 40-ч неделе | Часы при 36-ч неделе |
|---|---|---|---|---|
| Январь | 15 | 16 | 120 | 108 |
| Февраль | 19 | 9 | 152 | 136,8 |
| Март | 21 | 10 | 168 | 151,2 |
| Апрель | 22 | 8 | 175 | 157,4 |
| Май | 19 | 12 | 151 | 135,8 |
| Июнь | 21 | 9 | 167 | 150,2 |
| Июль | 23 | 8 | 184 | 165,6 |
| Август | 21 | 10 | 168 | 151,2 |
| Сентябрь | 22 | 8 | 176 | 158,4 |
| Октябрь | 22 | 9 | 176 | 158,4 |
| Ноябрь | 20 | 10 | 159 | 143 |
| Декабрь | 22 | 9 | 176 | 158,4 |
| Итого 2026 | 247 | 118 | 1972 | 1774,4 |
Примечание: таблица приведена для справки. Калькулятор использует точные помесячные данные для всех лет с 2022 по 2026.
Часто задаваемые вопросы
Какие годы производственного календаря загружены в калькулятор?
Полные данные с переносами и предпраздничными днями доступны для 2022–2026 годов. Для дат до 01.01.1992 расчёт не производится. Для дат после 31.12.2026 используется стандартная логика (выходные — суббота и воскресенье) без учёта переносов, о чём выводится предупреждение.
Как учесть отпуск или больничный при расчёте рабочих дней?
Используйте кнопку «+ Добавить исключаемый период» на вкладке «Подсчёт дней между датами». Укажите даты начала и окончания исключаемого интервала. Эти дни будут исключены из расчёта всех метрик. Периоды не должны пересекаться между собой. Один бухгалтер как-то пожаловался, что забыл про пересечение — калькулятор подсказал ошибку.
Почему расчёт на вкладке «Прибавить / вычесть рабочие дни» может дать дату, отличающуюся от ручного счёта?
Алгоритм учитывает все нерабочие праздничные дни и перенесённые выходные, которые могут выпадать на будни. Ручной счёт по календарю эти переносы часто упускает. Калькулятор всегда использует официальный производственный календарь для заданного года.
Учитываются ли региональные праздники?
Нет. В калькулятор заложены только федеральные нерабочие праздничные дни и переносы, установленные Правительством РФ. Праздники, установленные нормативными актами субъектов РФ (например, Ураза-байрам в Татарстане или Курбан-байрам в Башкортостане), не учитываются. При необходимости вы можете добавить их как исключаемый период вручную.
Что означают «предпраздничные сокращённые дни» и как они влияют на расчёт часов?
В соответствии с ч. 1 ст. 95 ТК РФ, продолжительность рабочего дня, непосредственно предшествующего нерабочему праздничному дню, уменьшается на 1 час. В калькуляторе эти дни помечены звёздочкой в исходных данных. Итоговое рабочее время = (количество рабочих дней × 8) — количество предпраздничных дней. Например, для мая 2026 года: 19 рабочих дней, 1 предпраздничный (08.05), итого часов = 19 × 8 — 1 = 151 час.