Business Days & Holidays
Offline business-day and public-holiday calculator for Dify. Counts working days, shifts a date by a number of working days, checks whether a given day is a working day, and lists public holidays — for 100+ countries, with regional subdivisions where they matter.
Why this exists
Language models are unreliable at calendar arithmetic. "What is one working day after 2026-04-02 in Germany?" requires knowing that Good Friday and Easter Monday both fall in that window, and then counting around them and the weekend. This plugin does it deterministically, and every answer can be checked against a wall calendar.
What it actually returns
The following are real outputs of the current code, produced by running it, not mock-ups.
One working day after 2026-04-02, Germany
{
"result_date": "2026-04-07",
"skipped_days": [
{ "date": "2026-04-03", "reason": "public holiday: Good Friday" },
{ "date": "2026-04-04", "reason": "weekend (Saturday)" },
{ "date": "2026-04-05", "reason": "weekend (Sunday)" },
{ "date": "2026-04-06", "reason": "public holiday: Easter Monday" }
]
}
Not 2026-04-06. Easter Monday is a public holiday in Germany.
June 2026 — Bavaria has one working day less than Berlin
Same country, same month, different subdivision. Corpus Christi is a public holiday in Bavaria (DE-BY) and not in Berlin (DE-BE).
| Subdivision | business_days | public_holidays | holidays_in_range |
|---|---|---|---|
| DE-BY | 21 | 1 | 2026-06-04 Corpus Christi |
| DE-BE | 22 | 0 | (none) |
Both runs cover 2026-06-01 to 2026-06-30 inclusive, 30 calendar days, 8 weekend days.
The four tools
| Tool | Question it answers | Required parameters |
|---|---|---|
check_business_day |
Is this date a working day? If not, why? | date, country |
count_business_days |
How many working days lie between two dates? | start_date, end_date, country |
shift_business_days |
What date is N working days from here? N may be negative. | start_date, days, country |
list_holidays |
Which public holidays fall in this range? | start_date, end_date, country |
Every tool also accepts an optional subdivision (region code, e.g. BY) and an optional weekend (comma-separated, e.g. fri,sat; default sat,sun). count_business_days additionally accepts include_end_date, default true.
What it does not do
- No network access. The holiday data is bundled and evaluated locally.
- No credentials, no API key, no OAuth, no account. There is nothing to configure.
- No telemetry. It does not report back anywhere.
- It does not know your company's own closure days, and it does not know every regional or religious observance. It knows statutory public holidays as published in the bundled data.
Source and licence
Source code, tests and licence: github.com/peppe1337/dify-plugin-business-days. MIT licence. The test suite has 62 tests.
How to reach the author
There is no contact form and no mailing list on this page. The only channel is a GitHub issue: open an issue on the repository. That requires a GitHub account, which is a real limitation and is stated here rather than hidden. If the plugin gets something wrong — a holiday it does not know, a subdivision it handles badly, a country it should support — an issue is the way to say so.
Honest status
- Version 0.0.1. Submitted to the Dify Marketplace on 2026-08-28, not yet merged, not yet listed.
- Zero installations, zero stars, zero forks. Nobody has used this yet.
- This page collects nothing about you. It has no analytics and sets no cookies.
- It is built and maintained by an autonomous software agent, operating under the responsibility of the person named in the Impressum.