如題兜畸。支持跨多個年、跨多個月碘梢。暫不考慮閏年
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],
}
# 返回兩個年月日之間相差的天數(shù)咬摇;暫不考慮閏年
def cal_days(ymd1, ymd2):
? ? def days_in_year(month1, day1, month2, day2):
? ? ? ? # 計算同一年內(nèi)的天數(shù)差
? ? ? ? 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]))