在现代软件开发中,准确判断中国法定节假日和工作日已成为众多应用的必备功能。无论是考勤系统、财务计算,还是项目管理工具,都需要精准的节假日识别能力。chinese-calendar 作为专业的 Python 库,为开发者提供了完整、准确的节假日判断解决方案。
快速上手:安装与基础使用
一键安装 chinese-calendar
使用 pip 命令即可快速安装最新版本的 chinese-calendar 库:
pip install chinesecalendar
介绍 Python 库 chinese-calendar 的使用指南。该库用于准确判断中国法定节假日与工作日,支持调休识别。功能包括安装、基础判断、获取详细信息、时间段统计及工作日查找。数据源自官方通知,覆盖 2004-2026 年。适用于考勤、财务计算等场景。建议定期更新版本以确保数据准确。
在现代软件开发中,准确判断中国法定节假日和工作日已成为众多应用的必备功能。无论是考勤系统、财务计算,还是项目管理工具,都需要精准的节假日识别能力。chinese-calendar 作为专业的 Python 库,为开发者提供了完整、准确的节假日判断解决方案。
使用 pip 命令即可快速安装最新版本的 chinese-calendar 库:
pip install chinesecalendar
由于中国的节假日安排每年都可能调整,建议在每年 11 月前后升级到最新版本:
pip install -U chinesecalendar
import datetime
from chinese_calendar import is_holiday, is_workday
# 判断 2023 年国庆节是否为节假日
national_day = datetime.date(2023, 10, 1)
print(f"2023 年国庆节是节假日吗?{is_holiday(national_day)}")
print(f"2023 年国庆节是工作日吗?{is_workday(national_day)}")
chinese-calendar 库的核心功能是准确判断任意日期是否为中国法定节假日。该功能基于国家相关部门发布的官方节假日安排,确保数据的权威性。
from chinese_calendar import is_holiday
# 批量判断多个日期
dates_to_check = [
datetime.date(2024, 1, 1), # 元旦
datetime.date(2024, 2, 10), # 春节初一
datetime.date(2024, 4, 4), # 清明节
datetime.date(2024, 5, 1) # 劳动节
]
for date in dates_to_check:
if is_holiday(date):
print(f"{date} 是法定节假日")
除了节假日判断,该库还能准确识别工作日,包括考虑调休安排:
from chinese_calendar import is_workday
# 判断调休日(周末上班的情况)
weekend_workday = datetime.date(2024, 2, 17) # 春节调休上班
print(f"2024 年 2 月 17 日是工作日吗?{is_workday(weekend_workday)}")
import chinese_calendar as calendar
# 获取节假日的具体信息
date_to_check = datetime.date(2024, 5, 1)
is_holiday_flag, holiday_name = calendar.get_holiday_detail(date_to_check)
if is_holiday_flag:
print(f"{date_to_check} 是 {holiday_name}")
对于需要统计一段时间内节假日数量的应用场景:
from chinese_calendar import get_holidays
start_date = datetime.date(2024, 1, 1)
end_date = datetime.date(2024, 12, 31)
# 获取 2024 年所有节假日(包含周末)
all_holidays_2024 = get_holidays(start_date, end_date, include_weekends=True)
print(f"2024 年共有 {len(all_holidays_2024)} 天节假日")
from chinese_calendar import find_workday
# 查找下一个工作日
today = datetime.date.today()
next_workday = find_workday(delta_days=1)
print(f"下一个工作日是:{next_workday}")
chinese-calendar 采用清晰的模块化设计,主要包含以下核心模块:
| 模块名称 | 功能描述 | 主要用途 |
|---|---|---|
| constants.py | 节假日常量定义 | 存储节假日类型和名称 |
| data.py | 节假日数据生成 | 处理原始节假日数据 |
| solar_terms.py | 24 节气计算 | 支持农历相关功能 |
| utils.py | 工具函数库 | 提供通用辅助方法 |
该库的所有节假日数据均来源于国家相关部门发布的官方通知,确保:
from chinese_calendar import is_workday
def calculate_workdays(start_date, end_date):
"""计算两个日期之间的实际工作日数量"""
workday_count = 0
current_date = start_date
while current_date <= end_date:
if is_workday(current_date):
workday_count += 1
current_date += datetime.timedelta(days=1)
return workday_count
# 计算 2024 年 1 月的工作日
jan_start = datetime.date(2024, 1, 1)
jan_end = datetime.date(2024, 1, 31)
workdays = calculate_workdays(jan_start, jan_end)
print(f"2024 年 1 月共有 {workdays} 个工作日")
from chinese_calendar import is_workday
def calculate_interest(start_date, end_date, principal, daily_rate):
"""基于工作日计算利息"""
total_interest = 0
current_date = start_date
while current_date <= end_date:
if is_workday(current_date):
total_interest += principal * daily_rate
current_date += datetime.timedelta(days=1)
return total_interest
chinese-calendar 目前支持的时间范围为:
import datetime
from chinese_calendar import is_holiday
def safe_holiday_check(date):
"""安全的节假日判断函数"""
try:
return is_holiday(date)
except Exception as e:
print(f"节假日判断出错:{e}")
return False
# 默认返回非节假日
chinese-calendar 库作为 Python 生态中专门处理中国节假日的解决方案,具有以下显著优势:
无论您是开发企业管理系统、金融计算工具,还是个人日程应用,chinese-calendar 都能为您提供专业、可靠的节假日判断服务。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online