Python判断节假日 chinese_calendar
程序员文章站
2022-02-19 06:34:24
...
pip install chinesecalendar
支持 2004年 至 2021年
判断某日是节假日还是工作日。
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
或者封装方法:
from chinese_calendar import is_workday, is_holiday
import chinese_calendar as calendar
import time, datetime
def is_weekday(date):
'''
判断是否为工作日
'''
Y = date.year
M = date.month
D = date.day
april_last = datetime.date(Y, M, D)
return is_workday(april_last)
def is_holidays(date):
'''
判断是否为节假日
'''
Y = date.year
M = date.month
D = date.day
april_last = datetime.date(Y, M, D)
return is_holiday(april_last)
def is_festival(date):
"""
判断是否为节日
注意:有些时间属于相关节日的调休日也会显示出节日名称,可参考源码https://pypi.org/project/chinesecalendar/
"""
Y = date.year
M = date.month
D = date.day
april_last = datetime.date(Y, M, D)
on_holiday, holiday_name = calendar.get_holiday_detail(april_last)
return on_holiday, holiday_name
if __name__ == "__main__":
today = datetime.datetime.now()
week = is_weekday(today)
holiday = is_holidays(today)
festival = is_festival(today)
print("week-{}".format(week))
print("holiday-{}".format(holiday))
print("festival-{}-{}".format(festival[0], festival[1]))
上一篇: vue指令笔记总结(一)
下一篇: Leetcode 平衡二叉树