返回顶部
g

global-holidays全球假日

|

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.2
安全检测
已通过
791
下载量
免费
免费
0
收藏
概述
安装方式
版本历史

global-holidays

holidays — Python 假日库

概述

holidays 是一个 Python 库,可动态生成特定国家和地区的政府指定假日集合。它覆盖 249 个国家(ISO 3166-1),并通过 ISO 3166-2 代码支持地区(州、省、区域)。

核心对象是 HolidayBase,其行为类似于 Python 的 dict,映射 date → holiday name。以下所有示例均可直接在 shell 中运行:

bash
python <

你的代码


EOF

或者(如果通过 uv 安装包)


uv run - <

你的代码


EOF


安装

重要提示:始终使用虚拟环境或 --break-system-packages 标志。

bash
pip install holidays --break-system-packages

生产环境使用请锁定特定版本:

bash
pip install holidays==0.58 --break-system-packages



快速参考


任务方法
获取某国/某年所有假日countryholidays(US, years=2024)
获取某地区假日
countryholidays(US, subdiv=CA, years=2024) |
| 获取日期范围内的假日 | holidays_obj[2024-01-01:2024-01-31] |
| 检查某日期是否为假日 | holidays_obj.get(2024-12-25) → 名称或 None |
| 添加自定义假日 | holidays_obj.update({2024-07-10: 我的生日!}) |
| 列出所有支持的国家 | listsupportedcountries() |
| 列出支持本地化的国家 | listlocalizedcountries() |


核心 API

country_holidays() — 主函数

python
country_holidays(
country, # ISO 3166-1 alpha-2 代码,例如 US、GB、DE
subdiv=None, # ISO 3166-2 地区代码,例如 CA、TX、BY
years=None, # 整数或整数列表,例如 2024 或 [2023, 2024]
expand=True, # 检查当前范围外的日期时自动扩展年份
observed=True, # 包含调休假日(例如周末假日→周一)
language=None, # 假日名称的 ISO 639-1 语言代码,例如 en、de
categories=None, # 过滤特定假日类别(因国家而异)
)

返回一个 HolidayBase 对象(类似字典:{date: name})。



常见任务

1. 获取某国某年的所有假日

python
from holidays import country_holidays

usholidays = countryholidays(US, years=2024)
for date, name in sorted(us_holidays.items()):
print(date, name)

2. 获取某地区(州/省)的假日

使用 ISO 3166-2 地区代码(例如 CA 代表加利福尼亚州,BY 代表巴伐利亚州)。

python
from holidays import country_holidays

caholidays = countryholidays(US, subdiv=CA, years=2024)
for date, name in sorted(ca_holidays.items()):
print(date, name)

3. 获取日期范围内的假日

使用日期字符串(YYYY-MM-DD)对 HolidayBase 对象进行切片:

python
from holidays import country_holidays

caholidays = countryholidays(US, subdiv=CA, years=2024)
for day in ca_holidays[2024-01-01:2024-01-31]:
print(f{day}: {ca_holidays.get(day)})

4. 检查特定日期是否为假日

.get() 如果日期是假日则返回假日名称,否则返回 None。

python
from holidays import country_holidays

caholidays = countryholidays(US, subdiv=CA)

12月25日是假日吗?

name = ca_holidays.get(2024-12-25) print(name) # → Christmas Day

12月26日是假日吗?

name = ca_holidays.get(2024-12-26) print(name) # → None

提示: 使用 if date in holidays_obj: 进行布尔检查(比 .get() 更快)。

5. 使用自定义假日

安全提示: 仅在用户明确提供或要求时使用自定义假日。切勿假定文件位置存在。

始终询问用户文件路径,而不是使用默认位置。如果他们没有自定义假日文件,请跳过此功能。

示例工作流程:

  1. 1. 询问用户:您是否有要包含的自定义假日 JSON 文件?
  2. 如果是,询问:自定义假日文件的完整路径是什么?
  3. 然后加载并合并:

python
import json
from pathlib import Path
from holidays import country_holidays

仅在用户明确提供路径时使用

custom_file = Path(/path/user/provided/custom-holidays.json)

读取前验证文件是否存在

if custom_file.exists(): with open(custom_file) as f: custom_data = json.load(f)

holidays2024 = countryholidays(US, years=2024)
holidays2024.update(customdata)

print(holidays_2024.get(2024-07-10)) # → 我的生日!(如果已定义)
else:
print(f文件未找到:{custom_file})

自定义假日文件格式:
json
{
2024-07-10: 我的生日!,
2024-10-01: 家庭庆祝
}

6. 列出所有支持的国家和地区

python
from holidays import listsupportedcountries

include_aliases=True 也会返回常用别名(例如 UK 代表 GB)

supported = listsupportedcountries(include_aliases=True) print(supported[US]) # → 支持的美国地区代码列表

7. 使用本地化(翻译)的假日名称

语言代码:

  • - 使用 ISO 639-1 代码(例如 en、de、fr)
  • 某些国家使用特定区域代码(例如 enUS、zhCN)
  • 如果请求不支持的语言,库会回退到默认语言

步骤 1:查找支持本地化的国家

python
from holidays import listlocalizedcountries

获取所有支持多种语言的国家

localized = listlocalizedcountries(include_aliases=True)

检查特定国家是否支持本地化

if MY in localized: print(f马来西亚支持:{localized[MY]}) # 输出:马来西亚支持:[enMY, msMY, zh_CN, ...]

步骤 2:生成特定语言的假日

python
from holidays import country_holidays

马来语的马来西亚假日

myholidaysms = countryholidays(MY, years=2025, language=msMY) for date, name in sorted(myholidaysms.items())[:3]: print(f{date}: {name})

英语的相同假日

myholidaysen = countryholidays(MY, years=2025, language=enMY) for date, name in sorted(myholidaysen.items())[:3]: print(f{date}: {name})

需要了解的关键行为

  • - observed=True(默认): 当假日落在周末时,会包含调休日期(通常是周一)。设置 observed=False 仅获取法定日期。
  • expand=True(默认): 如果你检查 years 范围之外的日期,库会自动添加该年份。设置 expand=False 可防止此行为。
  • 多个年份: 向 years 传递列表可一次加载多个年份:years=[2023, 2024, 2025]。
  • 日期键: HolidayBase 字典接受 datetime.date、datetime.datetime 或 YYYY-MM-DD 字符串作为键,可互换使用。
  • 国家代码: 使用 ISO 3166-1 alpha-2(例如 US、GB、DE)。当 include_aliases=True 时支持 UK 等别名。

依赖项

  • - Python: 3.10+
  • 包:

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 global-holidays-1776420048 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 global-holidays-1776420048 技能

通过命令行安装

skillhub install global-holidays-1776420048

下载

⬇ 下载 global-holidays v1.0.2(免费)

文件大小: 3.82 KB | 发布时间: 2026-4-17 19:35

v1.0.2 最新 2026-4-17 19:35
- Renamed the skill from "holidays" to "global-holidays".
- Added `metadata` field with requirements and install instructions for improved integration and discoverability.
- Enhanced language localization documentation for holiday names, including more explicit country and language code examples.
- Added instructions and examples for running Python code with `uv` as an alternative to plain Python.
- No functional changes to skill usage or API.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部