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包的五个简单准则简介
Jun 15 Python
Python文件与文件夹常见基本操作总结
Sep 19 Python
python3.5 tkinter实现页面跳转
Jan 30 Python
python 基本数据类型占用内存空间大小的实例
Jun 12 Python
Python3实现的旋转矩阵图像算法示例
Apr 03 Python
python multiprocessing模块用法及原理介绍
Aug 20 Python
Python爬虫爬取煎蛋网图片代码实例
Dec 16 Python
appium+python adb常用命令分享
Mar 06 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
python如何代码集体右移
Jul 20 Python
聊聊python中的异常嵌套
Sep 01 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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项目的方法
2006/10/09 PHP
PHP自定义函数获取汉字首字母的方法
2016/12/01 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
jquery 中的each()跳出循环的语句
2014/05/23 Javascript
javascript制作的简单注册模块表单验证
2015/04/13 Javascript
js中substr,substring,indexOf,lastIndexOf,split,replace的用法详解
2015/11/09 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
基于JQuery实现的跑马灯效果(文字无缝向上翻动)
2016/12/02 Javascript
Angular中的$watch方法详解
2017/09/18 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
浅谈React之状态(State)
2018/09/19 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
node链接mongodb数据库的方法详解【阿里云服务器环境ubuntu】
2019/03/07 Javascript
jQuery创建折叠式菜单
2019/06/15 jQuery
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
python网络编程之读取网站根目录实例
2014/09/30 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
自定义Django默认的sitemap站点地图样式
2020/03/04 Python
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
财会专业大学生求职信
2014/09/26 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
2014年科技工作总结
2014/11/26 职场文书
保护环境建议书作文500字
2015/09/14 职场文书
工商局调档介绍信
2015/10/22 职场文书
python文件目录操作之os模块
2021/05/08 Python
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
Python实现视频自动打码的示例代码
2022/04/08 Python