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天

经验分享 程序员 微信小程序 职场和发展