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多线程编程中的join函数使用心得
Sep 02 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
python 二分查找和快速排序实例详解
Oct 13 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
对django layer弹窗组件的使用详解
Aug 31 Python
基于Python实现剪切板实时监控方法解析
Sep 11 Python
python 发送json数据操作实例分析
Oct 15 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
Python3.9.1中使用match方法详解
Feb 08 Python
Python Numpy库的超详细教程
Apr 06 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 self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
Thinkphp模板中使用自定义函数的方法
2012/09/23 PHP
php猜单词游戏
2015/09/29 PHP
解决FireFox下[使用event很麻烦]的问题
2006/11/26 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
jquery实现点击弹出层效果的简单实例
2014/03/03 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
详解基于Bootstrap+angular的一个豆瓣电影app
2017/06/26 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
微信小程序拼接图片链接无底洞深入探究
2019/09/03 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
Layui事件监听的实现(表单和数据表格)
2019/10/17 Javascript
vue Element左侧无限级菜单实现
2020/06/10 Javascript
Python切片知识解析
2016/03/06 Python
python中快速进行多个字符替换的方法小结
2016/12/15 Python
K-近邻算法的python实现代码分享
2017/12/09 Python
Python之web模板应用
2017/12/26 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
Django组件cookie与session的具体使用
2019/06/05 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
Html5 postMessage实现跨域消息传递
2016/03/11 HTML / CSS
英国领先的在线高尔夫设备零售商:Golfgeardirect
2020/12/11 全球购物
采购主管的岗位职责
2013/12/17 职场文书
物理系毕业生自荐书
2014/06/13 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
2014国庆节标语口号
2014/09/19 职场文书
学生犯错保证书
2015/05/09 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
python​格式化字符串
2022/04/20 Python