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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
Python最基本的数据类型以及对元组的介绍
Apr 14 Python
python自带的http模块详解
Nov 06 Python
Django学习笔记之Class-Based-View
Feb 15 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 Python
Python 中的Selenium异常处理实例代码
May 03 Python
python爬虫之线程池和进程池功能与用法详解
Aug 02 Python
python生成1行四列全2矩阵的方法
Aug 04 Python
Python修改文件往指定行插入内容的实例
Jan 30 Python
python raise的基本使用
Sep 10 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 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的Yii框架中进行错误和异常处理
2016/03/17 PHP
Paypal实现循环扣款(订阅)功能
2017/03/23 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
javascript 随机展示头像实现代码
2011/12/06 Javascript
js 一个关于图片onload加载的事
2013/11/10 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
JS实现微信里判断页面是否被分享成功的方法
2017/06/06 Javascript
JavaScript复制内容到剪贴板的两种常用方法
2018/02/27 Javascript
在微信小程序里使用watch和computed的方法
2018/08/02 Javascript
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
electron 安装,调试,打包的具体使用
2019/11/06 Javascript
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
在Django中创建动态视图的教程
2015/07/15 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Python实现Linux监控的方法
2019/05/16 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
土耳其时尚购物网站:Morhipo
2017/09/04 全球购物
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
哪些情况下不应该使用索引
2015/07/20 面试题
大三在校生电子商务求职信
2013/10/29 职场文书
一夜的工作教学反思
2014/02/08 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
项目战略合作意向书
2015/05/08 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python