首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python计算节假日

python计算节假日

作者头像
周小董
发布2019-03-25 10:50:22
2.6K0
发布2019-03-25 10:50:22
举报
文章被收录于专栏:python前行者python前行者

以下是统计2019年and2020年节假日,请直接看代码,注释的很详细

# -*- coding:utf-8 -*-
import datetime

'''判断当天日期是否为节假日'''

#把调休的休息日加到这里面
rest_holiday=[
    '2018-12-31',
    '2019-01-01','2019-02-04','2019-02-05','2019-02-06','2019-02-07','2019-02-08',
    '2019-04-05','2019-04-29','2019-04-30','2019-05-01','2019-06-07','2019-09-13',
    '2019-10-01','2019-10-02','2019-10-03','2019-10-04','2019-10-07','2019-12-30',
    '2019-12-31',
    '2020-01-01','2020-01-24','2020-01-27','2020-01-28','2020-01-29','2020-01-30',
    '2020-04-06','2020-05-01','2020-06-25','2020-06-26','2020-10-01','2020-10-02',
    '2020-10-05','2020-10-06','2020-10-07','2020-10-08',
    '2021-01-01',
]
#把调休的工作日加到这里面
rest_workday=[
    '2019-02-02','2019-02-03','2019-04-27','2019-02-28','2019-09-29','2019-10-12',
    '2019-12-28','2019-12-29',
    '2020-01-19','2020-02-01','2020-06-28','2020-09-27','2020-10-10',
]

def is_holiday(start_date,end_date):
    set_date = datetime.datetime.strptime(start_date,"%Y-%m-%d")
    for i in range(10000):
        set_date_str=set_date.strftime('%Y-%m-%d')
        if set_date_str>=end_date:
            break
        #0~6代表周一~周日
        weekday=set_date.weekday()
        if set_date_str in rest_holiday or (weekday in [5,6] and set_date_str not in rest_workday):
            is_holiday=1
            is_monday=0
        else:
            is_holiday = 0
            is_monday = 1
        #这里的sql语句可根据自己的需要进行调整
        sql="INSERT INTO dmdc.t_is_holiday(`date`,is_holiday,is_monday) VALUES ('%s',%s,%s);"%(set_date_str,is_holiday,is_monday)
        #把sql语句写入sql文件
        with open('./date_is_holiday.sql','a+') as f:
            f.write(sql+'\n')
        #日期加1
        set_date = set_date + datetime.timedelta(days=1)


if __name__=='__main__':
    try:
        start_date='2019-01-01'
        end_date='2021-01-01'
        is_holiday(start_date,end_date)
    except Exception as e:
        import traceback
        ex_msg = '{exception}'.format(exception=traceback.format_exc())
        print(ex_msg,e)
sql文件结果
sql文件结果
  • 更新sql语句
UPDATE dmdc.t_is_holiday SET is_holiday=0,is_monday=1 WHERE `date`='2018-12-29';
UPDATE dmdc.t_is_holiday SET is_holiday=1,is_monday=0 WHERE `date`='2018-12-31';
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年11月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档