python计算日期之间的放假日期


Posted in Python onJune 05, 2018

本文实例为大家分享了python计算日期之间的放假日期,供大家参考,具体内容如下

代码如下:

#encoding=utf-8 
 
print '中国' 
 
#自动查询节日 给定起始日期和结束日期,自动获取总共的节假日天数 
 
import datetime 
from dateutil import rrule,easter 
 
 
try: set 
except NameError: from sets import Set as set 
 
#复活节 
def all_easter(start, end): 
  easters = [easter.easter(y) for y in xrange(start.year,end.year+1)] 
  return [d for d in easters if start<=d<=end] 
 
#开始到结束的节礼日列表 
def all_boxing(start, end): 
  one_day = datetime.timedelta(days=1) 
  boxings = [easter.easter(y) + one_day for y in xrange(start.year,end.year+1)] 
  return [d for d in boxings if start<=d<=end]  
 
#返回开始和结束日期之间的圣诞节列表 
def all_christmas(start, end): 
  christmases = [datetime.date(y,12,25) for y in xrange(start.year, end.year + 1)] 
  return [d for d in christmases if start<=d<=end] 
 
#返回劳动节列表 
def all_labor(start, end): 
  labors = rrule.rrule(rrule.YEARLY, bymonth=9, byweekday=rrule.MO(1),dtstart=start, until=end) 
  return [d.date() for d in labors] 
 
#读取设定的节假日 
def read_holidays(start, end, holidays_file='holidays.txt'): 
  try: 
    holidays_file = open(holidays_file) 
  except IOError,err: 
    print 'open failed' 
    return [] 
  holidays = [] 
   
  for line in holidays_file: 
    if line.isspace() or line.startswith('#'): 
      continue 
    try: 
      y,m,d = [int(x.strip()) for x in line.split(',')] 
      date = datetime.date(y,m,d) 
    except ValueError: 
      print 'Invalid line find' 
      continue 
    if start <= date <=end: 
      holidays.append(date)       
  holidays_file.close() 
  return holidays 
   
     
holidays_by_country = { 
'US':(all_easter,all_christmas,all_labor), 
'IT':(all_easter,all_boxing,all_labor) 
} 
 
def holidays(cc,start,end,holidays_file='holidays.txt'): 
  all_holidays= read_holidays(start,end,holidays_file) 
  functions = holidays_by_country.get(cc,()) 
  for function in functions: 
    all_holidays += function(start,end) 
  all_holidays = list(set(all_holidays)) 
  return (len(all_holidays),all_holidays) 
 
test_file = open(r'D:\123.txt','w') 
test_file.write('2014,3,23') 
test_file.close() 
 
print holidays('US',datetime.date(2014,1,1),datetime.date(2014,12,31),r'D:\123.txt')

打印结果如下:

中国
(4, [datetime.date(2014, 4, 20), datetime.date(2014, 12, 25), datetime.date(2014, 3, 23), datetime.date(2014, 9, 1)])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
Python的numpy库中将矩阵转换为列表等函数的方法
Apr 04 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
python通过链接抓取网站详解
Nov 20 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
Python基于xlrd模块处理合并单元格
Jul 28 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
python中scipy.stats产生随机数实例讲解
Feb 19 Python
python检索特定内容的文本文件实例
Jun 05 #Python
python中利用h5py模块读取h5文件中的主键方法
Jun 05 #Python
python 读取txt,json和hdf5文件的实例
Jun 05 #Python
利用Python如何将数据写到CSV文件中
Jun 05 #Python
Python之dict(或对象)与json之间的互相转化实例
Jun 05 #Python
对pandas中to_dict的用法详解
Jun 05 #Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 #Python
You might like
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
解析获取优酷视频真实下载地址的PHP源代码
2013/06/26 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
2014/03/28 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
php7下的filesize函数
2019/09/30 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
JS计算网页停留时间代码
2014/04/28 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
2015/11/30 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
Vue路由history模式解决404问题的几种方法
2018/09/29 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
js实现数字滚动特效
2019/12/16 Javascript
js实现简单扫雷
2020/11/27 Javascript
Python的语言类型(详解)
2017/06/24 Python
Python中捕获键盘的方式详解
2019/03/28 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
毕业自我鉴定
2013/11/05 职场文书
外语系毕业生找工作的求职信
2013/11/28 职场文书
手机促销活动方案
2014/02/05 职场文书
创建卫生先进单位实施方案
2014/03/10 职场文书
工伤赔偿协议书
2014/04/15 职场文书
管理工程专业求职信
2014/08/10 职场文书
财务会计实训报告
2014/11/05 职场文书
担保贷款承诺书
2015/04/30 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
医学会议开幕词
2016/03/03 职场文书
爱国之歌(8首)
2019/09/29 职场文书
JS创建或填充任意长度数组的小技巧汇总
2021/10/24 Javascript