根据日期算出相隔天数

首先利用Python库求的解法

1
2
3
4
5
6
7
import time  
import datetime

d1 = datetime.datetime(2018, 10, 18)
d2 = datetime.datetime(2017, 12, 31)

print ( (d1 - d2).days)

不使用Python第三方库解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

mdays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

# 判断是否闰年
def (year):
return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0)

# 输入日期返回相隔天数
def get_order_days(year, month, day, nyear, nmonth, nday):
# 分为年月相同的情况,年同月不同,以及年月均不相同三种情况
year_diff = nyear - year
month_diff = nmonth - month
if year_diff == 0:
if month_diff == 0:
return nday - day
else:
# 计算从起始月一号到最后日期的天数再减去开始的天数
sum_day = 0
for m in range(month, nmonth):
num_day = mdays[m] + (m == 2 and isleap(year))
sum_day += num_day
return sum_day + nday - day
else:
old_days = 0
new_days = 0
year_days = 0
for m in range(month, 13):
num_day = mdays[m] + (m == 2 and isleap(year))
old_days += num_day
old_days -= day
for m in range(1, nmonth):
num_day = mdays[m] + (m == 2 and isleap(year))
new_days += num_day
new_days += nday
for y in range(year+1, nyear):
if isleap(y):
year_days += 366
else:
year_days += 365
sumdays = old_days + new_days + year_days
print(sumdays)
return old_days + new_days + year_days


get_order_days(2011,6,30 ,2017,6,30)