# Business days calculator: add working days to a date

> The deadline N business days after or before a start date, skipping weekends and the holidays you list, with the calendar days it spans.

Интерактивная версия: https://www.calcopenly.com/ru/datetime/working-days-deadline-calculator
Тема: Калькуляторы даты и времени

Counting starts on the day after the start date. Each day that is neither a weekend day nor a listed holiday counts as one working day, and the nth such day is the deadline; going backwards works the same way from the day before. This is the convention of Excel's WORKDAY functions and NumPy's busday_offset. A holiday that falls on a weekend is skipped once, not twice.

It is used for payment terms, statutory response times, service-level targets and delivery estimates. Five working days after Friday, 18 December 2026, with Christmas Day and New Year's Day listed, is Monday, 28 December, 10 calendar days later. England and Wales also have a bank holiday on 28 December 2026, the substitute day for Boxing Day; list it and the deadline moves to Tuesday, 29 December.

Public holidays differ by country and region, so none are assumed: paste your own, one ISO date per line.

## Входные данные

- **Start date**
- **Working days**
- **Direction** (варианты: After the start, Before the start)
- **Weekend** (варианты: Sat–Sun, Fri–Sat, Sun only)
- **Holidays**: One ISO date per line (YYYY-MM-DD), optionally followed by a name.
- **Count the start date as day 1**: Only applies when the start date is itself a working day.

## Результаты

- Deadline — основной результат
- День недели
- Calendar days (days)
- Weekend days skipped
- Holidays skipped
- Holidays in the way

## Формула

$$
\text{deadline} = \text{the } n\text{-th day after the start that is neither a weekend day nor a holiday}
$$

## Примеры с решением

### Five working days over Christmas

- Start date: 2026-12-18
- Working days: 5
- Direction: After the start
- Weekend: Sat–Sun
- Holidays: 2026-12-25 Christmas / 2027-01-01 New Year
- **Deadline: 2026-12-28**
- **День недели: Monday**
- **Calendar days: 10 days**
- **Weekend days skipped: 4**
- **Holidays skipped: 1**
- **Holidays in the way: Christmas (Fri 25 Dec 2026)**
- Источник проверки: numpy.busday_offset('2026-12-18', 5, roll='backward', holidays=[...]) = 2026-12-28; skipped days counted by hand on a 2026 calendar

### Starting on a Saturday

- Start date: 2026-01-17
- Working days: 1
- Direction: After the start
- Weekend: Sat–Sun
- **Deadline: 2026-01-19**
- **День недели: Monday**
- Источник проверки: numpy.busday_offset('2026-01-17', 1, roll='backward') = 2026-01-19

### Friday–Saturday weekend

- Start date: 2026-01-15
- Working days: 10
- Direction: After the start
- Weekend: Fri–Sat
- **Deadline: 2026-01-29**
- **Calendar days: 14 days**
- Источник проверки: numpy.busday_offset('2026-01-15', 10, roll='backward', weekmask='1111001') = 2026-01-29

### Ten working days back over New Year's Day

- Start date: 2026-01-15
- Working days: 10
- Direction: Before the start
- Weekend: Sat–Sun
- Holidays: 2026-01-01
- **Deadline: 2025-12-31**
- **День недели: Wednesday**
- **Holidays skipped: 1**
- Источник проверки: numpy.busday_offset('2026-01-15', -10, roll='forward', holidays=['2026-01-01']) = 2025-12-31

### Counting the start date as day 1

- Start date: 2026-01-15
- Working days: 10
- Direction: After the start
- Weekend: Sat–Sun
- Count the start date as day 1: да
- **Deadline: 2026-01-28**
- Источник проверки: numpy.busday_offset('2026-01-15', 9, roll='forward') = 2026-01-28

## Вопросы

### How do I work out 10 business days from a date?

Count forward from the next day and skip weekends and public holidays. With no holidays in the way, 10 business days is two full working weeks, so from a weekday it lands on the same weekday 14 calendar days later: 10 business days after Thursday, 15 January 2026 is Thursday, 29 January. Each holiday on a weekday pushes the deadline one working day further.

### Is the start date counted as a business day?

Not by default. The first working day is the day after the start, the same as Excel's WORKDAY, so 1 business day after a Monday is Tuesday. Some contracts and procedures count the start date as day 1; switch on that option and 10 working days from Thursday, 15 January 2026 ends on Wednesday, 28 January instead of Thursday, 29 January.

### What if the start date falls on a weekend or holiday?

Counting still begins with the next working day, so the weekend adds nothing. 1 business day after Saturday, 17 January 2026 is Monday, 19 January, the same answer as from Friday, 16 January. With the start-date option on, a start that isn't a working day can't be day 1, and the calculator warns you.

### How many working days are in a month?

Between 20 and 23 weekdays before public holidays. February has exactly 20 in a common year and 20 or 21 in a leap year; a 30-day month has 20 to 22 and a 31-day month 21 to 23, depending on the weekday it starts on. A year of 261 weekdays, as in 2026, averages 21.75 per month.

### Насколько точен «Business days calculator: add working days to a date»?

Точность зависит от введённых данных и допущений метода. Десятичная арифметика использует 50 значащих цифр, но оценки, численные методы и исходные данные могут быть менее точными; округление на экране не устраняет эти ограничения. Решённые примеры, проверенные по независимым источникам: 5. Например, «Five working days over Christmas» проверяется по источнику numpy.busday_offset('2026-12-18', 5, roll='backward', holidays=[...]) = 2026-12-28; skipped days counted by hand on a 2026 calendar.

### Откуда взята методика?

Microsoft Excel WORKDAY.INTL function (same convention: the start date is not counted); NumPy busday_offset.

## Источники

- [Microsoft Excel WORKDAY.INTL function (same convention: the start date is not counted)](https://support.microsoft.com/office/workday-intl-function-a378391c-9ba7-4678-8a39-39611a9bf81d)
- [NumPy busday_offset](https://numpy.org/doc/stable/reference/generated/numpy.busday_offset.html)
