Калькулятор человеко-дней
Считает количество рабочих дней между двумя датами или прибавляет/вычитает рабочие дни к указанной дате. Учитывает выходные (сб, вс) и государственные праздники РФ.
Логика вычислений
Калькулятор работает в двух режимах: «дней между датами» (по двум датам считается количество рабочих дней между ними) и «прибавить / вычесть дни» (к дате прибавляется или из неё вычитается заданное число рабочих дней). В обоих режимах каждый календарный день проверяется по одному и тому же правилу: является ли он рабочим. День считается нерабочим в зависимости от выбранной опции исключения — выходные (суббота, воскресенье), государственные праздники РФ или и то, и другое (список праздников — в таблице ниже).
Признак нерабочего дня записывается так:
Исключён, если: выходные → W; только праздники → P; выходные и праздники → W или P; все дни → никогда
где:
- W — день выпадает на субботу или воскресенье;
- P — день совпадает с одним из праздников РФ (см. таблицу ниже).
Дальше рабочие дни суммируются по-разному в зависимости от режима.
Дней между датами
Период перебирается день за днём от начальной даты до конечной. Если включён флажок «включить конечную дату», к концу периода добавляется один день, и конечная дата тоже попадает в подсчёт. Подсчитывается общее число календарных дней и из них — число рабочих:
D_общ = D_кон − D_нач (+ 1 при включении конечной даты)
где:
- D_общ — всего календарных дней в периоде, дн;
- D_нач, D_кон — начальная и конечная даты периода.
Из общего количества дней вычитаются все нерабочие, остаются рабочие:
N_раб = D_общ − D_искл D_искл = D_общ − N_раб
где:
- N_раб — количество рабочих дней в периоде, дн;
- D_искл — количество исключённых (нерабочих) дней — выходных и/или праздников, дн.
Прибавить / вычесть дни
От начальной даты калькулятор шагает по одному календарному дню вперёд (при прибавлении) или назад (при вычитании). Каждый рабочий день засчитывается; шаги продолжаются, пока число засчитанных рабочих дней не сравняется с заданным. Дата последнего засчитанного дня и есть результат:
D_итог = D_нач ± (N_зад рабочих дней)
где:
- D_итог — итоговая дата;
- D_нач — начальная дата;
- ± — знак операции: «+» прибавить, «−» вычесть;
- N_зад — заданное количество рабочих дней, дн.
Попутно считается, сколько всего календарных дней пришлось перешагнуть, чтобы набрать нужное число рабочих, и сколько из них оказалось нерабочими:
D_искл = D_общ − N_зад
где:
- D_общ — всего пройдено календарных дней, дн;
- D_искл — из них исключённых (выходных и/или праздников), дн.
Государственные праздники РФ
Праздничные нерабочие дни проверяются по числу и месяцу для любого года (без учёта официальных переносов):
| Дата | Праздник |
|---|---|
| 1 января | Новый год |
| 2–6 января | Новогодние каникулы |
| 7 января | Рождество Христово |
| 8 января | Новогодние каникулы |
| 23 февраля | День защитника Отечества |
| 8 марта | Международный женский день |
| 1 мая | Праздник Весны и Труда |
| 9 мая | День Победы |
| 12 июня | День России |
| 4 ноября | День народного единства |
