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实现用户登陆邮件通知的方法
Jul 09 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
Python基于OpenCV实现人脸检测并保存
Jul 23 Python
python 模拟银行转账功能过程详解
Aug 06 Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 Python
Django异步任务线程池实现原理
Dec 17 Python
python scrapy重复执行实现代码详解
Dec 28 Python
python中图像通道分离与合并实例
Jan 17 Python
Python Tornado批量上传图片并显示功能
Mar 26 Python
Selenium向iframe富文本框输入内容过程图解
Apr 10 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 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使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
jQuery窗口、文档、网页各种高度的精确理解
2014/07/02 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
BootStrap数据表格实例代码
2017/09/13 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
javascript History对象原理解析
2020/02/17 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python pickle 和 shelve模块的用法
2013/09/16 Python
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Python自动生产表情包
2017/03/17 Python
python email smtplib模块发送邮件代码实例
2018/04/26 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
Python flask框架post接口调用示例
2019/07/03 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
新奇的小玩意:IWOOT
2016/07/21 全球购物
澳洲网红粉泥面膜:Sand & Sky
2019/08/13 全球购物
介绍一下木马病毒的种类
2015/07/26 面试题
顶撞老师检讨书
2014/02/07 职场文书
课外活动总结
2015/02/04 职场文书
跑出一片天观后感
2015/06/08 职场文书
人生遥控器观后感
2015/06/11 职场文书
童年读书笔记
2015/06/26 职场文书
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL