昨天做了一个工作,基本任务就是根据传入的时间(列表类型)判断是工作日还是休息日,这里做一个分享。
首先介绍Python的三个包:datetime、business_calendar、chinese_calendar
datetime
datatime 模块题共用一些处理日期,时间和时间间隔的函数。这个模块使用面向对象的交互取代了time模块中整形/元组类型的时间函数。
在这个模块中的所有类型都是新型类,能够从python中继承和扩展。
这里对datetime类库有一个初步的介绍。
business_calendar和chinese_calendar
这两个类库各有长处,都是用来判断是否是节假日。
chinese_calendar判断某年某月某一天是不是工作日/节假日。 支持 2004年 至 2019年。 兼容 Python2与Python3。
business_calendar提供了非常简单易用的计算工作日的接口,并允许用户指定特定日期为假期,从而将其从当前的工作日中剔除
chinese_calendar的优势在于它引入了中国除公历假期外的农历假期如春节、中秋节、端午节、清明节等。支持2014年至2019年,优点是准确,符合国情233,缺点是太受限制了,这就需要每年去更新包。
business_calendar优点在于可以自己指定休息日和工作日:如指定周一到周四为工作日,其余为休息日,还可以手动指定节假日,缺点是稍繁琐,而且不符合国情,,,毕竟我们国家的假期总是飘忽不定的。
下面来看一下两者的实际使用情况:
chinese_calendar
import datetime
from chinese_calendar import is_workday()
date = datetime.datetime(2019, 8, 16)
if is_workday(date):
print("是工作日")
else:
print("是休息日")
输出结果:
>>>是工作日
buiness_calendar
import datetime
from business_calendar import Calendar, MO, TU, WE, TH, FR
date =datetime.datetime(2019, 8, 16)
cal = Calendar(workdays=[MO,TU,WE,TH], holidays=['2019-01-1', '2019-10-1'])
if(cal.isbusday(date)):
print("是工作日")
else:
print("是休息日")