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系列之数据处理编程实例(二)
May 22 Python
Python多线程实例教程
Sep 06 Python
使用IronPython把Python脚本集成到.NET程序中的教程
Mar 31 Python
用Python编写一个基于终端的实现翻译的脚本
Apr 24 Python
python中的编码知识整理汇总
Jan 26 Python
Python面向对象类继承和组合实例分析
May 28 Python
在Python 不同级目录之间模块的调用方法
Jan 19 Python
Python中类的创建和实例化操作示例
Feb 27 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
python实现图片素描效果
Sep 26 Python
Python的logging模块基本用法
Dec 24 Python
pandas数值排序的实现实例
Jul 25 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数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
js 自动播放的实例代码
2013/11/19 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
[01:15:45]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第一局
2016/02/26 DOTA
浅谈python数据类型及类型转换
2017/12/18 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
PyQt5 多窗口连接实例
2019/06/19 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
本科生详细的自我评价
2013/09/19 职场文书
保安自我鉴定范文
2013/12/08 职场文书
给导游的表扬信
2014/01/10 职场文书
先进工作者获奖感言
2014/02/08 职场文书
前处理班长职位说明书
2014/03/01 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
2014年师德承诺书
2014/05/23 职场文书
学习型班组申报材料
2014/05/31 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2015年“7.11”世界人口日宣传活动方案
2015/05/06 职场文书
主持人开场白台词
2015/05/29 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
python模板入门教程之flask Jinja
2022/04/11 Python