您当前的位置:首页 > 计算机 > 编程开发 > Python

python计算节假日

时间:08-20来源:作者:点击数:
CDSY,CDSY.XYZ

以下是统计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语句
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';
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐