- 从一个博主那里看的,自己思路改了一点,博主地址在下面
# 判断是否是闰年
def isLeapYear(year):
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
return True
else:
return False
# year1为起始日期,year2为终止日期
# 判断year1是否为闰年,选择year1当年每月的天数列表
def dayBetweenDates(year1, month1, day1, year2, month2, day2):
if isLeapYear(year1):
print(str(year1)+':闰年')
dayofmonth1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 列表下标从0开始的 所以后面计算月份天数的时候,传入的月份应该-1
else:
print(str(year1) + ':非闰年')
dayofmonth1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
year_temp = year2 - year1
month_temp = month2 - month1
if year_temp == 0:
if month_temp == 0:
days = day2 - day1
else:
# days = dayofmonth1[month1 - 1] - day1 + day2 # '掐头去尾'
i = 1
sum = 0
#假设计算3月5号到6月4号的天数,先计算3,4,5月的总天数,所以是 [month1 + i - 1-1],然后减去5,加上4
while i < month_temp + 1:
day = dayofmonth1[month1 + i - 1-1]
sum += day
i+=1
days = sum - day1 + day2
else:
if isLeapYear(year2):
dayofmonth2 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
year_days = 366
else:
dayofmonth2 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
year_days = 365
i = 1
sum1 = 0
sum2 = 0
middle_year_sum_days=0
# 获取小年份剩余的天数
while i < month1:
day = dayofmonth1[month1 - i-1]
sum1 += day
i += 1
other_days1 = year_days - sum1 - day1
# 获取大年份经过的天数
i=1
while i < month2:
day = dayofmonth2[month2 - i-1]
sum2 += day
i += 1
other_days2 = sum2 + day2
# 获取中间年份的天数
i=1
while i < year_temp:
middle_year = year1+i
if isLeapYear(middle_year):
year_day=366
else:
year_day=365
middle_year_sum_days+=year_day
i+=1
days=middle_year_sum_days+other_days1+other_days2
return days
# 2014 1.25 2018.3.26
days=dayBetweenDates(2014,1,25,2018,3,26)
print(days)
原文作者:Fiona_yuyu
来源:CSDN
原文:https://blog.csdn.net/sinat_22581761/article/details/78229166