python- 工作/休息/调休日怎么精准判断

python的第三方模块chinesecalendar,提供了判断工作日、休息日、节假日的方法。
不仅可以判断法定节假日,还可以返回节假日的名称,对调休日也可以做出判断,十分好用。
具体用法如下:
1、chinesecalendar模块安装
进入到本地python安装的Scripts文件路径下,
输入安装命令:pip install chinesecalendar,回车即可安装。
python- 工作/休息/调休日怎么精准判断_第1张图片
注:每一年年底都需更新到最新版本的chinesecalendar,才会支持最新的一年。如上图安装的是最新版本,支持2004年-2022年。如果不更新,超过版本支持的年份,将会报错,如这里的版本只支持到2022年,超过将会报错如下:
python- 工作/休息/调休日怎么精准判断_第2张图片

2、chinesecalendar模块常见方法及导入

该模块常用的方法,如下表:

模块 说明
is_workday 判断是否为工作日,语法:is_workday(date)
is_holiday 判断是否为节假日/休息日,语法:is_holiday(date)
is_in_lieu 判断是否为调休日,语法:is_in_lieu(date)
get_holiday_detail 判断是否为节假日、节假日名称,语法:get_holiday_detail(date)返回值:元组,如,(True, ‘Dragon Boat Festival’),Dragon Boat Festival-端午节
get_workdays 传入开始日期和结束日期,得到工作日的日期,语法:get_workdays(start_date,end_date)
get_holidays 传入开始日期和结束日期,得到休息日的日期,语法:get_holidays(start_date,end_date)

导入该模块的方法,如,导入is_workday方法

from chinese_calendar import is_workday

3、使用实例

3.1、输入日期,判断这一天是工作日or休息日(包含调休日),并且判断是否为节假日,如果是,输出节日名称。

import datetime
from chinese_calendar import is_workday, is_holiday, is_in_lieu, get_holiday_detail

while True:
    time1 = input('请输入XXXX-XX-XX格式的日期:')
    time2 = datetime.datetime.strptime(time1, '%Y-%m-%d')
    if is_workday(time2):
        print(time1+":是工作日")
    if is_in_lieu(time2):
        print(time1+":是调休日")
    if is_holiday(time2):
        print(time1 + ":是休息日")
        if get_holiday_detail(time2)[1] is not None:
            print('节日名:'+get_holiday_detail(time2)[1])

python- 工作/休息/调休日怎么精准判断_第3张图片
3.2、打印某个时间区间,是工作日的日期
如,打印出2022年5月1日-2022年5月31,是工作日的日期

from datetime import datetime, date
from chinese_calendar import get_workdays
# 输出2022.5.1-2022.5.31的工作日
work_day = get_workdays(datetime(2022, 5, 1), datetime(2022, 5, 31))
work_day = [date.strftime(i, '%Y-%m-%d') for i in work_day]
print(work_day)

python- 工作/休息/调休日怎么精准判断_第4张图片
3.3、打印某个时间区间,是休息日的日期
如,打印出2022年5月1日-2022年5月31,是休息日的日期

from datetime import datetime,date
from chinese_calendar import get_holidays
# 输出2022.5.1-2022.5.31d的节假日
hol_day = get_holidays(datetime(2022, 5, 1), datetime(2022, 5, 31))
hol_day = [date.strftime(i, '%Y-%m-%d') for i in hol_day]
print(hol_day)

在这里插入图片描述
注:上面代码中还用到了datetime模块,主要用来字符串与时间格式数据的转换。

以上就是chinesecalendar模块的用法。
微信关注【一位代码】,了解更多关于python、mysql相关问题解决办法。
-end-

你可能感兴趣的:(python,python,开发语言)