python判断日期是否是休息日,如果是,就往后加,一直加到非休息日

这篇博客介绍了一个Python需求,即判断输入日期是否为休息日,并递增日期直至找到工作日。通过示例解释了如何处理连续的休息日,如国庆假期期间的日期处理,最终返回首个工作日。
摘要由CSDN通过智能技术生成

今天在过需求的,遇到一个需求,逻辑非常简单:

逻辑:判断一个日期是否是休息日(包括节假日),如果是就往后+1天,如果还是就继续+天数,直到工作日停止

举个非常简单的例子10月1日——10月7日,都是休息日,那么,就要返回10月8日,就相当于休息日不算

输入

date_list = ['2022/10/1', '2022/10/2', '2022/10/3', 
'2022/10/4', '2022/10/5', '2022/10/6', 
'2022/10/7', '2022/10/8']

OUT

2022/10/08(原本是2022/10/1)
2022/10/08(原本是2022/10/2)
2022/10/08(原本是2022/10/3)
2022/10/08(原本是2022/10/4)
2022/10/08(原本是2022/10/5)
2022/10/08(原本是2022/10/6)
2022/10/08(原本是2022/10/7)
2022/10/08(原本是2022/10/8)
直接上代码(写好了满满的注释)
from datetime import datetime
from chinese_calendar import is_workday

def isWorkdays(date_value):
    """
    # 判断是否是法定节假日
    """
    if is_workday(date_value):
        # print("{}是工作日".format(date_value))
        return date_value # 返回给刚刚的递归(应该不是很绕吧这里)
    else:
        # print("{}是休息日".format(date_value))
        import datetime
        # print(type(date_value))
        date = (date_value + datetime.timedelta(days=1)).strftime("%Y-%m-%d") # 如果是休息日 天数 +1
        from datetime import datetime
        date_value = datetime.strptime(date, '%Y-%m-%d').date() # 将字符串时间转为 <class 'datetime.date'>
        # print(type(date_2),date_2)
        re = isWorkdays(date_value) # 递归 如果是休息日 继续调用自己
        return re # 返回给第一次调用(应该不是很绕吧这里)
        # return f"{date_value}休息日"


date_list = ['2022/10/1', '2022/10/2', '2022/10/3', '2022/10/4', '2022/10/5', '2022/10/6', '2022/10/7', '2022/10/8']
for i in date_list:
    date_2 = datetime.strptime(i, '%Y/%m/%d').date() # 将字符串时间转为 <class 'datetime.date'>
    re = isWorkdays(date_2) # 调用判断是否为节假日 函数
    re = str(re).replace("-","/")
    print(re)

致力于办公自动化的小小程序员一枚

致力于写出最清楚的博客

都看到这了,关注+点赞+收藏=不迷路!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值