跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 中国节假日日历库使用指南:识别法定节假日与工作日

介绍 Python 库 chinese-calendar 的使用指南。该库用于准确判断中国法定节假日与工作日,支持调休识别。功能包括安装、基础判断、获取详细信息、时间段统计及工作日查找。数据源自官方通知,覆盖 2004-2026 年。适用于考勤、财务计算等场景。建议定期更新版本以确保数据准确。

板砖工程师发布于 2026/3/28更新于 2026/10/24109 浏览

在现代软件开发中,准确判断中国法定节假日和工作日已成为众多应用的必备功能。无论是考勤系统、财务计算,还是项目管理工具,都需要精准的节假日识别能力。chinese-calendar 作为专业的 Python 库,为开发者提供了完整、准确的节假日判断解决方案。

快速上手:安装与基础使用

一键安装 chinese-calendar

使用 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  dates_to_check:
     is_holiday(date):
        ()
in
if
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.py24 节气计算支持农历相关功能
utils.py工具函数库提供通用辅助方法
数据权威性保障

该库的所有节假日数据均来源于国家相关部门发布的官方通知,确保:

  • 数据来源权威可靠
  • 调休安排准确无误
  • 及时更新最新政策
  • 覆盖 2004-2026 完整年份

实际应用场景案例

企业考勤系统集成
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 目前支持的时间范围为:

  • 起始年份:2004 年
  • 结束年份:2026 年
版本更新策略
  1. 定期检查更新:每月检查一次是否有新版本
  2. 年度升级计划:每年 11 月强制升级到最新版本
  3. 测试环境验证:在生产环境使用前在测试环境验证
错误处理机制
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 生态中专门处理中国节假日的解决方案,具有以下显著优势:

  • 精准可靠:基于国家相关部门官方数据,确保判断准确性
  • 轻量高效:库文件体积小,运行速度快
  • 易于集成:API 设计简洁,快速融入现有项目
  • 持续维护:团队积极维护,及时更新节假日数据

无论您是开发企业管理系统、金融计算工具,还是个人日程应用,chinese-calendar 都能为您提供专业、可靠的节假日判断服务。

目录

  1. 快速上手:安装与基础使用
  2. 一键安装 chinese-calendar
  3. 年度数据更新策略
  4. 基础功能体验
  5. 判断 2023 年国庆节是否为节假日
  6. 核心功能深度解析
  7. 智能节假日判断
  8. 批量判断多个日期
  9. 工作日精准识别
  10. 判断调休日(周末上班的情况)
  11. 高级功能实战应用
  12. 获取节假日详细信息
  13. 获取节假日的具体信息
  14. 时间段节假日统计
  15. 获取 2024 年所有节假日(包含周末)
  16. 工作日智能查找
  17. 查找下一个工作日
  18. 项目架构与数据源
  19. 模块化设计架构
  20. 数据权威性保障
  21. 实际应用场景案例
  22. 企业考勤系统集成
  23. 计算 2024 年 1 月的工作日
  24. 财务利息计算优化
  25. 使用注意事项与最佳实践
  26. 时间范围限制
  27. 版本更新策略
  28. 错误处理机制
  29. 默认返回非节假日
  30. 总结与推荐

更多推荐文章

查看全部
  • AI 辅助 Java 零基础入门与核心实战教程
  • Redux 核心概念与常见面试问题解析
  • GitHub Copilot 学生认证及激活指南
  • OpenWrt opkg update 报错 Failed to download 且换源无效的解决方案
  • Openclaw 报错 unauthorized: gateway token mismatch 解决方案
  • 微信小程序云开发:环境配置与数据库操作详解
  • Stable Diffusion 3.5 FP8 量化技术解析:精度、性能与架构变革
  • Linux 基础 IO 系列:文件本质与“一切皆文件”哲学
  • Kubernetes 云原生实践:.NET Core 与 Java 深度对比与选型
  • 实测 Gemini Pro:谷歌多模态 AI 的实际应用能力
  • Java AI 学习路径:从基础到工程化落地
  • Jetson Xavier NX 驱动服务机器人:项目应用详解
  • Python 零基础入门学习指南与跨行经验分享
  • 大模型学习方法:从构建小应用入手而非沉迷理论
  • Node.js 22+ 环境搭建与 OpenAI/Vercel AI SDK 快速入门
  • DeepSeek 隐藏玩法与智能应用实战指南
  • Code2Prompt 工具使用指南:将本地项目打包为 AI 提示词
  • Java 图像处理实战:马赛克与灰度算法及底层原理解析
  • 大模型学习的五个进阶阶段与路线指南
  • Windows 安装 OpenCode AI 编码助理踩坑与成功指南

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online