一键导入
add-a-new-holiday-calendar
Create XML holiday calendar configuration files for a new country or region
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create XML holiday calendar configuration files for a new country or region
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Write country-specific holiday tests using CalendarCheckerApi
Add subdivision holiday configurations based on ISO 3166-2 codes
Add country description properties for localization
Add holiday description properties for localization
Register a new holiday calendar in the HolidayCalendar enum
| name | Add a new Holiday Calendar |
| description | Create XML holiday calendar configuration files for a new country or region |
This guide explains how to create XML holiday calendar files for countries in Jollyday.
Create a new file at: jollyday-core/src/main/resources/holidays/Holidays_[country_code].xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration hierarchy="[country_code]" description="[Country Name]"
xmlns="https://focus_shift.de/jollyday/schema/holiday"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://focus_shift.de/jollyday/schema/holiday https://focus_shift.de/jollyday/schema/holiday/holiday.xsd">
<Holidays>
<!-- Add your holidays here -->
</Holidays>
<Sources>
<Source>https://en.wikipedia.org/wiki/Public_holidays_in_[Country_Name]</Source>
<Source of="ISO 3166">https://www.iso.org/obp/ui/#iso:code:3166:[COUNTRY_CODE]</Source>
<Source of="ISO 3166-2">https://en.wikipedia.org/wiki/ISO_3166-2:[COUNTRY_CODE]</Source>
</Sources>
</Configuration>
IMPORTANT:
- The country code in ISO 3166 URLs (
[COUNTRY_CODE]) must always be UPPERCASE (e.g.,DE,FR,US), even though thehierarchyattribute uses lowercase. The ISO 3166-2 Wikipedia reference also requires uppercase.- The Wikipedia URL for public holidays must use underscores (
_) instead of spaces for whitespace (e.g.,Public_holidays_in_GermanynotPublic holidays in Germany).
| Attribute | Description |
|---|---|
hierarchy | ISO 3166-1 alpha-2 country code (e.g., "de", "us", "fr") |
description | Full country name in English |
For holidays on a fixed calendar date:
<Fixed month="JANUARY" day="1" descriptionPropertiesKey="NEW_YEAR"/>
With validity period:
<Fixed month="OCTOBER" day="31" validFrom="2017" descriptionPropertiesKey="REFORMATION_DAY"/>
<Fixed month="JUNE" day="19" validFrom="2021" descriptionPropertiesKey="JUNETEENTH"/>
For holidays on a specific weekday occurrence in a month:
<FixedWeekday which="FIRST" weekday="MONDAY" month="SEPTEMBER" descriptionPropertiesKey="LABOUR_DAY"/>
<FixedWeekday which="THIRD" weekday="MONDAY" month="JANUARY" descriptionPropertiesKey="MARTIN_LUTHER_KING"/>
<FixedWeekday which="FOURTH" weekday="THURSDAY" month="NOVEMBER" descriptionPropertiesKey="THANKSGIVING"/>
<FixedWeekday which="LAST" weekday="MONDAY" month="MAY" descriptionPropertiesKey="MEMORIAL_DAY"/>
which values: FIRST, SECOND, THIRD, FOURTH, LAST
For Christian holidays that depend on Easter:
<ChristianHoliday type="GOOD_FRIDAY"/>
<ChristianHoliday type="EASTER_MONDAY"/>
<ChristianHoliday type="ASCENSION_DAY"/>
<ChristianHoliday type="WHIT_MONDAY"/>
<ChristianHoliday type="CORPUS_CHRISTI"/>
<ChristianHoliday type="PENTECOST"/>
With optional localizedType:
<ChristianHoliday type="GOOD_FRIDAY" localizedType="OBSERVANCE"/>
For Islamic calendar-based holidays:
<IslamicHoliday type="ID_AL_FITR"/>
<IslamicHoliday type="ID_AL_FITR_2"/>
<IslamicHoliday type="ID_AL_FITR_3"/>
<IslamicHoliday type="ID_UL_ADHA"/>
<IslamicHoliday type="ARAFAAT"/>
<IslamicHoliday type="NEWYEAR"/>
<IslamicHoliday type="MAWLID_AN_NABI"/>
For holidays calculated relative to a fixed date:
<RelativeToFixed validFrom="1990" descriptionPropertiesKey="REPENTANCE_PRAYER">
<Weekday>WEDNESDAY</Weekday>
<When>BEFORE</When>
<Date month="NOVEMBER" day="23"/>
</RelativeToFixed>
When values: BEFORE, AFTER
For holidays that shift to weekdays when falling on weekends:
<Fixed month="JANUARY" day="1" descriptionPropertiesKey="NEW_YEAR">
<MovingCondition substitute="SATURDAY" with="PREVIOUS" weekday="FRIDAY"/>
<MovingCondition substitute="SUNDAY" with="NEXT" weekday="MONDAY"/>
</Fixed>
For countries with subdivision holidays (states, provinces):
<SubConfigurations hierarchy="[subdivision_code]" description="[Subdivision Name]">
<Holidays>
<Fixed month="MARCH" day="8" descriptionPropertiesKey="INTERNATIONAL_WOMAN"/>
</Holidays>
</SubConfigurations>
| Attribute | Description |
|---|---|
hierarchy | ISO 3166-2 code (e.g., "by", "bw") |
description | Full subdivision name in English |
Example with nested subdivisions:
<SubConfigurations hierarchy="by" description="Bavaria">
<Holidays>
<Fixed month="JANUARY" day="6" descriptionPropertiesKey="EPIPHANY"/>
</Holidays>
<SubConfigurations hierarchy="mu" description="Munich">
<Holidays>
<Fixed day="15" month="AUGUST" descriptionPropertiesKey="ASSUMPTION_DAY"/>
</Holidays>
</SubConfigurations>
</SubConfigurations>
| Attribute | Description | Example |
|---|---|---|
month | Month (English, uppercase) | JANUARY, DECEMBER |
day | Day of month | 1, 25 |
weekday | Day of week | MONDAY, FRIDAY |
which | Which occurrence | FIRST, LAST, THIRD |
validFrom | Start year | 1990, 2021 |
validTo | End year | 1990, 2020 |
descriptionPropertiesKey | Key for description | NEW_YEAR |
localizedType | Holiday type variant | OBSERVANCE |
JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
GOOD_FRIDAY, EASTER, EASTER_MONDAY, EASTER_SATURDAY, EASTER_TUESDAYASCENSION_DAY, WHIT_MONDAY, PENTECOST, PENTECOST_MONDAYCORPUS_CHRISTI, CARNIVAL, MARDI_GRAS, PALM_SUNDAY, MAUNDY_THURSDAY, ASH_WEDNESDAYNEWYEAR, MAWLID_AN_NABI, LAILAT_AL_BARAT, LAILAT_AL_MIRAJ, LAILAT_AL_QADRASCHURA, RAMADAN, RAMADAN_ENDID_AL_FITR, ID_AL_FITR_2, ID_AL_FITR_3ARAFAAT, ID_UL_ADHA, ID_UL_ADHA_2, ID_UL_ADHA_3<?xml version="1.0" encoding="UTF-8"?>
<Configuration hierarchy="de" description="Germany"
xmlns="https://focus_shift.de/jollyday/schema/holiday"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://focus_shift.de/jollyday/schema/holiday https://focus_shift.de/jollyday/schema/holiday/holiday.xsd">
<Holidays>
<Fixed month="JANUARY" day="1" descriptionPropertiesKey="NEW_YEAR"/>
<Fixed month="MAY" day="1" descriptionPropertiesKey="LABOUR_DAY"/>
<Fixed month="DECEMBER" day="25" descriptionPropertiesKey="FIRST_CHRISTMAS_DAY"/>
<Fixed month="DECEMBER" day="26" descriptionPropertiesKey="SECOND_CHRISTMAS_DAY"/>
<ChristianHoliday type="GOOD_FRIDAY"/>
<ChristianHoliday type="EASTER_MONDAY"/>
<ChristianHoliday type="ASCENSION_DAY"/>
<ChristianHoliday type="WHIT_MONDAY"/>
</Holidays>
<Sources>
<Source>https://en.wikipedia.org/wiki/Public_holidays_in_Germany</Source>
<Source of="ISO 3166">https://www.iso.org/obp/ui/#iso:code:3166:DE</Source>
<Source of="ISO 3166-2">https://en.wikipedia.org/wiki/ISO_3166-2:DE</Source>
</Sources>
</Configuration>
jollyday-core/src/main/resources/focus_shift.de/jollyday/schema/holiday/holiday.xsdhttps://focus_shift.de/jollyday/schema/holiday/holiday.xsdHolidays_*.xml files in jollyday-core/src/main/resources/holidays/