【Windows_办公自动化_日报日期自动生成】自动生成带有中国节假日、调休、补休的日期

import datetime
import re

from holidays import CN  # 导入中国的节假日库

# 开始日期
start_date = datetime.date(2024, 8, 5)
end_date = datetime.date(2024, 12, 31)

# 当前日期
current_date = start_date

# 节假日和调休的详情
holidays_cn = CN(years=2024)

# 存储调休日期及其对应的原始节假日
compensatory_dict = {str(date): re.findall("休息日((.*?)日起取代)", desc)[0] for date, desc in holidays_cn.items() if "取代" in desc}  # 休息日(2024-09-29日起取代)
print(compensatory_dict.items())
print(compensatory_dict.keys())
print(compensatory_dict.values())
print()

holiday_name = ""
while current_date <= end_date:  # 假定我们只打印2024年的日期
    # 如果是工作日和周末
    if current_date.weekday() < 5:  # 0-4 是周一到周五
        day_name = ""
    elif current_date.weekday() in [5, 6]:  # 5-6 是周六和周日
        day_name = "(" + current_date.strftime("%A")[0:3] + ")"
    # 检查是否是节假日
    if current_date in holidays_cn:
        holiday_or_compensatory_desc = holidays_cn[current_date]
        if "节" in holiday_or_compensatory_desc:
            holiday_name = holiday_or_compensatory_desc
        else:
            holiday_or_compensatory_desc = f"{holiday_name}[{holidays_cn[current_date]}]"
    else:
        # 检查是否是调休
        if str(current_date) in compensatory_dict.keys():
            # original_holiday = datetime.date(current_date.year, *holidays_cn.get_date(compensatory_dict[current_date]))
            holiday_or_compensatory_desc = f"(官方放假)" + holiday_or_compensatory_desc
        elif str(current_date) in compensatory_dict.values():
            holiday_or_compensatory_desc = f"(官方补班)" + holiday_or_compensatory_desc
        else:
            holiday_or_compensatory_desc = ""

    # 递增日期
    print(f"{current_date}:{day_name}1.{holiday_or_compensatory_desc}。hour:8。")
    if current_date.weekday() == 6:
        print("-" * 100)
    current_date += datetime.timedelta(days=1)
### 运行结果
----------------------------------------------------------------------------------------------------
2024-09-30:1.。hour:8。
2024-10-01:1.国庆节。hour:8。
2024-10-02:1.国庆节。hour:8。
2024-10-03:1.国庆节。hour:8。
2024-10-04:1.国庆节[休息日(2024-09-29日起取代)]。hour:8。
2024-10-05:(Sat)1.。hour:8。
2024-10-06:(Sun)1.。hour:8。
----------------------------------------------------------------------------------------------------
2024-10-07:1.国庆节[休息日(2024-10-12日起取代)]。hour:8。
2024-10-08:1.。hour:8。
2024-10-09:1.。hour:8。
2024-10-10:1.。hour:8。
2024-10-11:1.。hour:8。
2024-10-12:(Sat)1.(官方补班)。hour:8。
2024-10-13:(Sun)1.。hour:8。
----------------------------------------------------------------------------------------------------
2024-10-14:1.。hour:8。
2024-10-15:1.。hour:8。
2024-10-16:1.。hour:8。
2024-10-17:1.。hour:8。
2024-10-18:1.。hour:8。
2024-10-19:(Sat)1.。hour:8。
2024-10-20:(Sun)1.。hour:8。
----------------------------------------------------------------------------------------------------

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值