如题。支持跨多个年、跨多个月。暂不考虑闰年
import time
import datetime
DAYS = {
1: [1, 31],
2: [1, 28], # 暂不考虑闰年
3: [1, 31],
4: [1, 30],
5: [1, 31],
6: [1, 30],
7: [1, 31],
8: [1, 31],
9: [1, 30],
10: [1, 31],
11: [1, 30],
12: [1, 31],
}
# 返回两个年月日之间相差的天数;暂不考虑闰年
def cal_days(ymd1, ymd2):
def days_in_year(month1, day1, month2, day2):
# 计算同一年内的天数差
assert month2 >= month1
if month1 == month2:
assert day2 >= day1
return day2-day1
m = month1
days = 0
while m <= month2:
if m == month1:
days += DAYS[m][1]-day1
elif m == month2:
days += day2
else:
days += DAYS[m][1]
m += 1
return days
y1 = ymd1[0]
m1 = ymd1[1]
d1 = ymd1[2]
y2 = ymd2[0]
m2 = ymd2[1]
d2 = ymd2[2]
assert y2 >= y1
if y1 == y2:
assert m2 >= m1
if m1 == m2:
assert d2 >= d1
res = 0
if y1 == y2:
res = days_in_year(m1, d1, m2, d2)
else:
res += days_in_year(m1, d1, 12, 31)
res += days_in_year(1, 1, m2, d2)
res += 365*(y2-y1-1)
return res
if __name__ == "__main__":
print(cal_days([2020, 4, 5], [2021, 5, 1]))