python計(jì)算日期之間的放假日期
本文實(shí)例為大家分享了python計(jì)算日期之間的放假日期,供大家參考,具體內(nèi)容如下
代碼如下:
#encoding=utf-8
print '中國'
#自動(dòng)查詢節(jié)日 給定起始日期和結(jié)束日期,自動(dòng)獲取總共的節(jié)假日天數(shù)
import datetime
from dateutil import rrule,easter
try: set
except NameError: from sets import Set as set
#復(fù)活節(jié)
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]
#開始到結(jié)束的節(jié)禮日列表
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]
#返回開始和結(jié)束日期之間的圣誕節(jié)列表
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]
#返回勞動(dòng)節(jié)列表
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]
#讀取設(shè)定的節(jié)假日
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')
打印結(jié)果如下:
中國
(4, [datetime.date(2014, 4, 20), datetime.date(2014, 12, 25), datetime.date(2014, 3, 23), datetime.date(2014, 9, 1)])
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python中關(guān)于時(shí)間和日期函數(shù)的常用計(jì)算總結(jié)(time和datatime)
- Python計(jì)算兩個(gè)日期相差天數(shù)的方法示例
- python計(jì)算N天之后日期的方法
- python 計(jì)算兩個(gè)日期相差多少個(gè)月實(shí)例代碼
- Python日期時(shí)間模塊datetime詳解與Python 日期時(shí)間的比較,計(jì)算實(shí)例代碼
- Python根據(jù)指定日期計(jì)算后n天,前n天是哪一天的方法
- Python 3.3實(shí)現(xiàn)計(jì)算兩個(gè)日期間隔秒數(shù)/天數(shù)的方法示例
- Python簡單計(jì)算給定某一年的某一天是星期幾示例
- Python編程判斷這天是這一年第幾天的方法示例
- Python編程實(shí)現(xiàn)輸入某年某月某日計(jì)算出這一天是該年第幾天的方法
- Python自定義函數(shù)計(jì)算給定日期是該年第幾天的方法示例
相關(guān)文章
pytorch中Transformer進(jìn)行中英文翻譯訓(xùn)練的實(shí)現(xiàn)
本文主要介紹了pytorch中Transformer進(jìn)行中英文翻譯訓(xùn)練的實(shí)現(xiàn),詳細(xì)闡述了使用PyTorch實(shí)現(xiàn)Transformer模型的代碼實(shí)現(xiàn)和訓(xùn)練過程,具有一定參考價(jià)值,感興趣的可以了解一下2023-08-08
詳解Python實(shí)現(xiàn)進(jìn)度條的4種方式
這篇文章主要介紹了Python實(shí)現(xiàn)進(jìn)度條的4種方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01
python生成requirements.txt文件的兩種方法
requirements.txt 文件是項(xiàng)目的依賴包及其對應(yīng)版本號(hào)的信息列表,本文主要介紹了python生成requirements.txt文件的兩種方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
python mqtt 客戶端的實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了python mqtt 客戶端代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09

