Compute target dates and durations using business days (Monday through Friday, minus any holidays you provide). Two modes: add a number of business days to a start date to get the target date, or count business days between two dates.
Holidays are optional — paste a list of YYYY-MM-DD dates (one per line) and they’ll be excluded from both business-day counts and business-day walks. No built-in holiday list because correct holidays depend on country, region, and year, and stale holiday data is worse than no data.
How it works
A business day is any date that is:
- Not Saturday
- Not Sunday
- Not in your holiday set
The tool walks the calendar one day at a time, counting (or skipping to) business days as defined above. Internally dates are pinned at UTC noon to avoid daylight-saving-time off-by-one bugs — the 23-hour day in spring-forward regions can confuse naive date math.
Example: contract deadline
“Net 30 business days” is a common invoice term. If you issue an invoice on Wed April 15, 2026 and need to know when payment is due:
- Start: 2026-04-15
- Add: 30 business days
- Target: 2026-05-28 (6 weeks later, because 30 business days spans 6 weeks of Mon–Fri)
If your company observes Memorial Day on 2026-05-25 as a holiday, add that to the holiday list:
- Start: 2026-04-15
- Add: 30 business days
- Holidays: 2026-05-25
- Target: 2026-05-29 (one day later because the 25th is skipped)
Example: how many working days in a quarter?
Q2 2026 runs from April 1 to June 30 (inclusive). To count the business days:
- Start: 2026-04-01
- End: 2026-07-01 (the day AFTER the last day, because count is half-open)
- Business days: 65 (13 weeks × 5 weekdays)
- Calendar days: 91
Remove federal holidays (Memorial Day 2026-05-25 and Independence Day 2026-07-04 → not in range) and you get 64 business days.
Example: reverse lookup
“When did this 60-day processing window start?” If you know the end date and the number of business days:
- Start: 2026-06-30
- Add: -60 (negative — walk backwards)
- Target: 2026-04-07
The backward walk respects weekends and holidays the same way as the forward walk.
Half-open interval convention
The count operation uses [start, end) — start counted, end excluded. This matches how date subtraction normally works:
- Mon April 13 to Fri April 17 = 4 business days (Mon, Tue, Wed, Thu; Fri is the endpoint, not counted)
- Mon April 13 to Mon April 20 = 5 business days (a full work week)
If you want “inclusive of both endpoints” instead, add 1 day to your end date before calling. The half-open convention avoids the ambiguity of “is Monday to Monday 5 days or 6?” — the answer is always 5 for one work week.
What this tool does not do
It doesn’t ship a default holiday list. Countries, regions, and years all differ; a wrong holiday set is worse than no holiday set. Provide your own.
It doesn’t handle partial-day holidays (half-day before Thanksgiving, early close on Christmas Eve). Business days are binary — either a day counts or it doesn’t.
It doesn’t model non-Mon–Fri work weeks directly. Countries with Friday–Saturday weekends (some Middle East and North Africa) or six-day work weeks need the holiday list as a workaround, or a code modification to the isBusinessDay function.
It doesn’t compute shipping times, SLA windows, or court filing deadlines that follow specific legal-calendar rules. Those vary by jurisdiction and sometimes include rules like “the last day of a period that falls on a holiday is pushed to the next business day, but only for certain kinds of deadlines”. This tool does straight business-day math; legal-calendar quirks need a domain-specific tool. For a start-date + N-business-days → deadline-date calculation, the deadline calculator is the forward-walk variant; for an arbitrary built-in holiday list for specific countries, see the working days calculator.