输入一段日期内的休息日和法定节假日
程序员文章站
2022-05-16 22:04:58
...
查询单日的有个现成的接口http://api.goseek.cn/ 返回数据:工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2
要做的就是生成一年的日期,然后逐个去判断校验了.
具体的代码如下,实现的是输入一个时间段,能返回时间段内的休息日和节假日.里面有冗余的,没做修改,先这样吧
#coding:utf-8
import json
import urllib2
import requests
import time
all_days=[]
def gener_data():
"""生成当年的所有日期"""
year=time.strftime('%Y',time.localtime()) #得到年份
months=[i for i in range(1,13)]
for month in months:
if month in [1,3,5,7,8,10,12]:
for j in range(1,32):
if j<10:
j='0{0}'.format(j)
if month<10:
month='0%s'%month
day='{0}{1}{2}'.format(year,month,j)
all_days.append(day)
elif month in [4,6,9,11]:
for j in range(1,31):
if j < 10:
j='0{0}'.format(j)
if month < 10:
month='0{0}'.format(month)
day = '{0}{1}{2}'.format(year, month, j)
all_days.append(day)
elif month==2:
for j in range(1,29):
if j < 10:
j = '0{0}'.format(j)
if month < 10:
month = '0{0}'.format(month)
day='{0}{1}{2}'.format(year, month, j)
all_days.append(day)
if int(year)%4==0:
all_days.append('{0}0229'.format(year))
return all_days
print gener_data()[gener_data().index('20181221'):gener_data().index('20181231')]
def get_holidays(start_date,end_date):
dates =gener_data()[gener_data().index(start_date):gener_data().index(end_date)+1]
holidays={}
for dt in dates:
url="http://api.goseek.cn/Tools/holiday?date={0}".format(dt)
response_data=requests.get(url).json()['data']
if response_data==1:
holidays[dt]=1
elif response_data==2:
holidays[dt]=2
value=sorted(holidays.items(),key=lambda holidays:holidays[0])
return value
print get_holidays("20180601","20180630")