2025年4月15日 星期二 乙巳(蛇)年 正月十六 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python计算节假日

时间:08-20来源:作者:点击数:21
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
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐