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 GUI实例学习
Nov 21 Python
python+matplotlib绘制3D条形图实例代码
Jan 17 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
pygame编写音乐播放器的实现代码示例
Nov 19 Python
Python ADF 单位根检验 如何查看结果的实现
Jun 03 Python
Python猫眼电影最近上映的电影票房信息
Sep 18 Python
python 调用API接口 获取和解析 Json数据
Sep 28 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
python pygame 愤怒的小鸟游戏示例代码
Feb 25 Python
分享7个 Python 实战项目练习
Mar 03 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+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
Javascript的闭包
2009/12/31 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
JavaScript在IE和Firefox浏览器下的7个差异兼容写法小结
2010/06/18 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
Ionic 2 实现列表滑动删除按钮的方法
2017/01/22 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
Python正则表达式匹配中文用法示例
2017/01/17 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
Python中@property的理解和使用示例
2019/06/11 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
python实现AdaBoost算法的示例
2020/10/03 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
2016年中秋祝酒词
2015/11/26 职场文书