workalendar是一个几乎全球国家的节假日库,但是需要一年更新一次
获取当天的前一个工作日日期
from datetime import timedelta, date
from workalendar.asia import China
import time
import datetime
def get_datetime():
# 测试使用:添加日期参数,如 2020-04-27
# today = datetime.strptime(daystr,'%Y-%m-%d').date()
# 默认按当天日期计算
today = date.today()
# eval()函数 把字符串类型转化为 双引号内类型(int)
year = eval(str(today).split("-")[0])
cal = China()
# 所有节假日日期放入此列表
holiday_list = []
for i in cal.holidays(year):
day = i[0].strftime('%Y-%m-%d')
holiday_list.append(day)
for i in range(1, 10):
days = timedelta(days=i)
item_day = today - days
# 获取日期是周几(0,1,2,3,4,5,6)
week = item_day.weekday()
is_work = cal.is_working_day(item_day)
if (item_day not in holiday_list and is_work == True) or (week not in (5, 6) and is_work == T