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.

Status: not yet listed in the Dify Marketplace. The plugin is complete and the source is public, but the listing request is still an open pull request (dify-plugins#2974, submitted 2026-08-28). Until it is merged and listed, you cannot install this from the Marketplace. You can read and run the source today.

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

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