Python计算两个日期之间相隔多少天

import numpy as np
import time


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)


now_time = time.strftime('%Y,%m,%d', time.localtime())

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(',' or ','))
d1 = [a1, b1, c1]
print('请输入较后日期的年份,月份,日期(示例:2020,1,25):')
a2, b2, c2 = map(int, input('输入年月日,用逗号隔开:').split(',' or ','))
# a2, b2, c2 = map(int, input('输入年月日,用逗号隔开:').split(','))
d2 = [a2, b2, c2]
print('{}年{}月{}日和{}年{}月{}日之间有{}天'.format(a1, b1, c1, a2, b2, c2, datedistance(d1, d2)))

  

posted @ 2022-10-13 17:36  羔羊也有梦想  阅读(768)  评论(0)    收藏  举报