安装包,截止1月27日,最新的版本是1.5.0,支持 2004年 至 2021年。
pip install chinesecalendar
判断某日是节假日还是工作日
import datetime
import chinese_calendar
demo_time = datetime.date(2018, 10, 2)
# 判断是否是节假日
data_is_holiday = chinese_calendar.is_holiday(demo_time) # True
# 判断某日是否工作日
data_is_workday = chinese_calendar.is_workday(demo_time) # False
判断日期是否是节日,如果是节日返回是否休息日和节日名称,不是的话节日名称为None。如果某个周六日是某个节假日的调休,也会返回该节假日的名称
demo_time = datetime.date(2018, 10, 1)
chinese_calendar.get_holiday_detail(demo_time) # (True, 'National Day')
demo_time = datetime.date(2018, 8, 1)
chinese_calendar.get_holiday_detail(demo_time) # (False, None)
获取两个日期之间的节假日或者工作日,返回的结果为所有工作日或者休息日日期的列表。
start_time = datetime.date(2018, 9, 1)
end_time = datetime.date(2018, 9, 15)
chinese_calendar.get_workdays(start_time,end_time)# [datetime.date(2018, 9, 3), datetime.date(2018, 9, 4), datetime.date(2018, 9, 5), datetime.date(2018, 9, 6), datetime.date(2018, 9, 7), datetime.date(2018, 9, 10), datetime.date(2018, 9, 11), datetime.date(2018, 9, 12), datetime.date(2018, 9, 13), datetime.date(2018, 9, 14)]
chinese_calendar.get_holidays(start_time,end_time)# [datetime.date(2018, 9, 1), datetime.date(2018, 9, 2), datetime.date(2018, 9, 8), datetime.date(2018, 9, 9), datetime.date(2018, 9, 15)]
根据日期推算该日期后的第几个工作日的日期,比如2018年9月30日的第一个工作日日期是2018年10月8日,今天是2021年1月27日的话,下一个工作日日期是2021年1月28日
demo_time = datetime.date(2018, 9, 30)
# 按日期推算工作日日期。可以接收两个参数,第一个参数是第几个工作日,第二个是从什么日期开始,不填默认是今天
next_workday = chinese_calendar.find_workday(1) # 2021-01-28
next_workday = chinese_calendar.find_workday(1,demo_time) # 2018-10-08