计算两个日期之间相隔的天数

如题。支持跨多个年、跨多个月。暂不考虑闰年


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]))

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容