Key facts
- A business day, or working day, is a day on which normal business is done: usually Monday to Friday, with weekends and public holidays excluded.
- There is no single global working week: several countries in the Middle East, for example, work Sunday to Thursday.
- DateUtils counts a range as
[start, end)by default: the start date counts if it is a working day, the end date does not. - Adding business days never counts the start date, so adding 1 business day to a Friday gives the following Monday, provided Monday is not a holiday.
- Business days, weekend days and holidays falling on working days always add up to the calendar days between the two dates.
What counts as a business day
A business day is a day on which normal business is done. In most of Europe and North America that means Monday to Friday, with Saturday and Sunday treated as non-working days. The term working day means the same thing and is often used in contracts and payroll documents.
Two things complicate the definition. The first is the working week itself, which is not universal. Several countries in the Middle East run a Sunday to Thursday working week with a Friday and Saturday weekend. The second is public holidays, which are set nationally, regionally and annually, and which reduce the count only when they fall on a day that would otherwise be working.
DateUtils lets you select any set of working weekdays and enter your own holidays, so the same calculation can be run against different working patterns. There is no built-in holiday calendar: a holiday is only ever counted if you enter it, in the format YYYY-MM-DD. The business days calculator applies those settings to a date range, and the add business days calculator applies them forwards from a start date.
How weekends and holidays are excluded
A date inside the range is excluded if it is one of the chosen non-working weekdays, or if it appears in the holiday list. A holiday that lands on a weekend day removes nothing, because that date was already outside the working week.
Many employers and public bodies shift a holiday that falls on a weekend to an adjacent weekday, known as an observed or substitute day. This substitution is not automatic anywhere. If your organisation moves a holiday from Saturday to Friday, you need to enter the Friday as the holiday; entering the Saturday alone will not reduce the count.
| Date type | Counted? |
|---|---|
| Monday to Friday, no holiday | Yes |
| Saturday or Sunday | No |
| Public holiday on a weekday | No |
| Public holiday falling on a weekend | No, and nothing further is deducted |
| Observed substitute weekday | Only if entered as a holiday |
Counting conventions for deadlines
Counting conventions decide whether the two ends of a range are included, and the choice changes the answer by one. DateUtils counts the range as [start, end) by default. The start date is counted when it is a working day, and the end date is never counted. Ticking the include end date option switches the range to [start, end], so both ends count.
Worked example: Monday 6 January 2025 to Monday 13 January 2025 contains the weekdays 6, 7, 8, 9 and 10 January. Under the default convention the answer is 5 business days, because 13 January is the end date and is not counted. With the end date included the answer is 6, counting 6 to 13 January.
Adding business days uses a different convention, and the difference catches people out. The start date is never counted. Adding 1 business day to Friday 10 January 2025 gives Monday 13 January 2025. Adding 0 business days returns the start date unchanged. This means the two operations agree at the edges: for a start date that is a working day and not a holiday, counting the range from the start to the result gives back the number of days added.
Deadlines written as "within 5 business days" depend on when the clock starts. If the day of receipt counts, the range is inclusive at the front; if it does not, the range starts the following working day. Both readings are common in contracts, so the wording of the clause, or the applicable rule, is what settles the answer. Courts and regulators often define their own counting rules, and where they do, those rules apply.
How spreadsheet functions compare
Excel and Google Sheets provide two functions for this work, and both differ from DateUtils in at least one convention.
NETWORKDAYS(start, end) counts both the start and the end date when each falls on a working day. For a range whose end date is a working day, that makes it one day higher than the DateUtils default. Passing a third argument listing holidays removes those dates. WORKDAY(start, n) returns the date n working days after the start, excluding the start date, which matches the DateUtils add business days behaviour.
Both functions assume a Monday to Friday week by default. The international variants, NETWORKDAYS.INTL and WORKDAY.INTL, take a weekend code that lets you define a different working week, which covers Sunday to Thursday patterns and other schedules. The precise conventions are set out in the business days methodology notes.
Checking a result
A useful check is that the business days, the weekend days and the holidays that fell on working days always add up to the calendar days in the range. In the January example above, the default range from 6 January up to (not including) 13 January holds 7 calendar days: 5 business days and 2 weekend days, 11 and 12 January. If a count looks too high or too low, check whether a holiday was entered on a weekend, where it removes nothing, or whether a working weekday was left unticked.
For the arithmetic behind the intervals themselves, see counting days between dates, which sets out the inclusive and exclusive conventions in full.