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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
python写的ARP攻击代码实例
Jun 04 Python
Python如何为图片添加水印
Nov 25 Python
python3.4用函数操作mysql5.7数据库
Jun 23 Python
详解django中自定义标签和过滤器
Jul 03 Python
python 动态生成变量名以及动态获取变量的变量名方法
Jan 20 Python
python如何给字典的键对应的值为字典项的字典赋值
Jul 05 Python
Python generator生成器和yield表达式详解
Aug 08 Python
python 默认参数相关知识详解
Sep 18 Python
Python openpyxl模块实现excel读写操作
Jun 30 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
Python中Cookies导出某站用户数据的方法
May 17 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
Terran热键控制
2020/03/14 星际争霸
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
基于jQuery实现的QQ表情插件
2015/08/25 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
JavaScript如何实现防止重复的网络请求的示例
2021/01/28 Javascript
Python多线程爬虫简单示例
2016/03/04 Python
python实现实时监控文件的方法
2016/08/26 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
Python面向对象程序设计类的封装与继承用法示例
2019/04/12 Python
用pycharm开发django项目示例代码
2019/06/13 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Django模板语言 Tags使用详解
2019/09/09 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
简单的HTML5初步入门教程
2015/09/29 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
酒店行政人事部经理职务说明书
2014/02/26 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
学生偷窃检讨书
2014/09/25 职场文书
防汛工作情况汇报
2014/10/28 职场文书
2014年学校体育工作总结
2014/12/08 职场文书
介绍信模板
2015/01/31 职场文书
2022漫威和DC电影上映作品
2022/04/05 欧美动漫