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中的yield浅析
Jun 16 Python
Windows下python3.7安装教程
Jul 31 Python
Python装饰器用法实例分析
Jan 14 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
python调用webservice接口的实现
Jul 12 Python
django的model操作汇整详解
Jul 26 Python
python global关键字的用法详解
Sep 05 Python
pytorch中torch.max和Tensor.view函数用法详解
Jan 03 Python
TensorFlow命名空间和TensorBoard图节点实例
Jan 23 Python
Python异常原理及异常捕捉实现过程解析
Mar 25 Python
django 实现后台从富文本提取纯文本
Jul 02 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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
smarty模板引擎之分配数据类型
2015/03/30 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
2016/05/26 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
js表数据排序 sort table data
2009/02/18 Javascript
jquery 插件开发方法小结
2009/10/23 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
vue.js 获取当前自定义属性值
2017/06/01 Javascript
关于vue.extend和vue.component的区别浅析
2017/08/16 Javascript
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
详解vue中router-link标签所必备了解的属性
2019/04/15 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
Python Pandas 获取列匹配特定值的行的索引问题
2019/07/01 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
为什么python比较流行
2020/06/19 Python
python tkinter实现连连看游戏
2020/11/16 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
食品销售计划书
2014/04/26 职场文书
法制演讲稿
2014/09/10 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
英文导游词
2015/02/13 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
开学第一天的感想
2015/08/10 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书