How Zeitwide decides a business day
The Java API, the hosted MCP server and the open Python library all follow these rules, and a shared conformance suite checks that they give the same answers for the same dataset release.
One calendar, one date
- Coverage. A calendar that closes on holidays covers 1 January of its first year to 31 December of the last year in which it has a recorded entry. A date outside that is
out_of_range: Zeitwide never guesses beyond what the sources published. FedNow closes on no holiday, so it has no limit. - Entry. If the date has an entry (a published or projected closure, or an opening on an otherwise closed day), the entry decides.
- Weekend rule. With no entry, the date is open unless its weekday is one of the calendar's weekend days.
Several calendars
Calendars combine with all_open (the default: every calendar is open) or any_open (at least one is). If any of them is out of range, so is the answer.
Operations
is_business_day(date): the rules above.next_business_day(date): the first business day after the date, never the date itself.add_business_days(date, n): movesnbusiness days, backwards whennis negative. The start date doesn't count, andn = 0returns it. Every day passed over that isn't a business day is listed inskipped, in the order met.
Where the data comes from
Zeitwide monitors each operator's official pages. A change is published only after two independent sources agree and a person reviews it. Each release is versioned (YYYY.MM.DD.N), and every answer names the release it came from, so it can be replayed as of any past moment.
publisheddates are listed by the operator.projecteddates are worked out by Zeitwide from the operator's published rules, before the operator lists them.
Updated 2 November 2026.