# 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/zh/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)
