Python计算两个日期之间相差的天数
Python提供的有关时间的库可以帮助我们方便地计算出两个日期之间的天数,那么不使用Python提供的库该怎么计算呢,笔者这里想了一种方法,以较早日期所在年的第一天作为起点,分别计算两个日期相对这一天的天数,然后把得到的相对天数相减,这样就能得到两个日期之间相差的天数。
import numpy as np
def datedistance(day1, day2): # day2是日期较大的一天,day1是日期较小的一天
year = np.linspace(day1[0], day2[0], day2[0]-day1[0]+1).astype(int)
flag1 = np.zeros((12,))
for i in range(day1[1]-1):
flag1[i] = 1
flag2 = np.zeros((12,))
for i in range(day2[1]-1):
flag2[i] = 1
year1 = 0
if (day1[0] % 4 == 0 and day1[0] % 100 != 0) or (day1[0] % 400 == 0 and day1[0] % 100 == 0):
for j in range(12):
year1 += flag1[j]*month1[j]
else:
for j in range(12):
year1 += flag1[j]*month2[j]
year1 += day1[2]
year2 = 0
if (day2[0] % 4 == 0 and day2[0] % 100 != 0) or (day2[0] % 400 == 0 and day2[0] % 100 == 0):
for j in range(12):
year2 += flag2[j]*month1[j]
else:
for j in range(12):
year2 += flag2[j]*month2[j]
year2 += day2[2]
for item in year[:-1]:
if (item % 4 == 0 and item % 100 != 0) or (item % 400 == 0 and item % 100 == 0):
year2 += 366
else:
year2 += 365
return int(year2 - year1)
month1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 闰年
month2 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 普通年
print(请输入较前日期的年份,月份,日期(示例:2020,1,25):)
a1, b1, c1 = map(int, input(输入年月日,用逗号隔开:).split(,))
d1 = [a1, b1, c1]
print(请输入较后日期的年份,月份,日期(示例:2020,1,25):)
a2, b2, c2 = map(int, input(输入年月日,用逗号隔开:).split(,))
d2 = [a2, b2, c2]
print({}年{}月{}日和{}年{}月{}日之间有{}天.format(a1, b1, c1, a2, b2, c2, datedistance(d1, d2)))
计算结果如下图所示: 计算一下今天到今年年底有多少天 今天到今年年底是86天
