输入时期的格式为: 2020-5-20
import datetime
def is_runyear(years): # 判断一个年份是否是闰年
return years%4 == 0 and years%100 != 0 or years%400 == 0
def for_str_data(data):
# 格式化字符串,将字符串转化为列表"2018-1-1"->[2018,1,1]
return data.split('-')
def dayofyear(str_data): # 利用datetime模块,求得一个datetime对象
list_data = for_str_data(str_data)
date = datetime.date(year=int(list_data[0]),month=int(list_data[1]),day=int(list_data[2]))
return date
def add_data(str_data1,str_data2): # 实现日期之间的日隔
year1 = for_str_data(str_data1)[0] # 得到第一个年份
year2 = for_str_data(str_data2)[0] # 得到第二个年份
if year1 == year2: # 同年不同天,同一年里的两个日期的日隔
return abs(dayofyear(str_data1) - dayofyear(str_data2)).days # 由两个日期(datetime对象)相减得到日隔
elif year1 > year2 :
add_data(str_data2,str_data1) # 排序,避免异常
else:
data1 = (dayofyear(year1+'-12-31')-dayofyear(str_data1)).days
data2 = (dayofyear(str_data2)-dayofyear(year2+'-1-1')).days
data3 = 0
for i in range(1,int(year2)-int(year1)):
if is_runyear(int(year1)+i):
data3 += 365
else:
data3 += 366
return data1 + data2 +data3
print((add_data("2020-1-19","2021-1-9")))
也不知道对不对,总感觉奇怪,希望有大佬指点迷津!