工作日工具 - WorkdayUtil¶
由来¶
在业务系统中,工作日计算(如发货时效、审批周期)是常见需求。WorkdayUtil 提供工作日判断、工作日数计算、加减工作日等功能,默认使用中国法定节假日配置,支持自定义假日列表。
方法¶
配置假日¶
from hutool import WorkdayUtil
from datetime import date
# 默认使用中国法定假日(2024/2025 年内置数据)
holidays = WorkdayUtil.holidays(2024)
# 自定义假日列表
WorkdayUtil.set_custom_holidays([
date(2024, 1, 1),
date(2024, 2, 10),
date(2024, 2, 11),
])
# 恢复默认
WorkdayUtil.set_custom_holidays(None)
工作日判断¶
from datetime import date
WorkdayUtil.is_workday(date(2024, 1, 2)) # True(周二,非假日)
WorkdayUtil.is_workday(date(2024, 1, 1)) # False(元旦)
WorkdayUtil.is_workday(date(2024, 1, 6)) # False(周六)
工作日导航¶
# 下一个工作日
WorkdayUtil.next_workday(date(2024, 1, 5)) # date(2024, 1, 8)(跳过周末)
# 上一个工作日
WorkdayUtil.previous_workday(date(2024, 1, 8)) # date(2024, 1, 5)
工作日数计算¶
# 两个日期之间的工作日数(含首末日)
WorkdayUtil.workdays(date(2024, 1, 1), date(2024, 1, 5)) # 3
# 日期加减 N 个工作日
WorkdayUtil.add_workdays(date(2024, 1, 1), 5) # date(2024, 1, 8)
WorkdayUtil.add_workdays(date(2024, 1, 8), -3) # date(2024, 1, 3)
复活节计算¶
# Easter — 计算复活节日期
WorkdayUtil.easter(2024) # date(2024, 3, 31)
WorkdayUtil.easter(2025) # date(2025, 4, 20)
# easterRelatedHolidays — 复活节相关假日(耶稣受难日、复活节周一等)
holidays = WorkdayUtil.easter_related_holidays(2024)
# {"good_friday": date(2024, 3, 29), "easter_monday": date(2024, 4, 1), ...}
工作小时数¶
from datetime import date
# workdayHours — 两个日期间的工作小时数
WorkdayUtil.workday_hours(date(2024, 1, 1), date(2024, 1, 5))
# 24(3 个工作日 x 8 小时)
备注
更多方法请参阅 API 参考 文档。