欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python 实现不使用语言自带的函数计算两个日期的差值

程序员文章站 2024-03-19 22:44:46
...

题目:

写一个函数,输入是两个日期,输出是这两个日期的日差。
例如:输入是20190102和20190103,输出是1
要求:
1、不能使用系统自带函数直接减
2、不能使用时间戳
3、日期格式是字符串类似2019-01-02格式,只考虑四位字符年份

所有代码均可在Github中找到:

下载链接

# -*- coding:utf-8 -*-
__author__ = 'yangxin_ryan'
"""
Solutions:
题目:
写一个函数,输入是两个日期,输出是这两个日期的日差。
例如:输入是20190102和20190103,输出是1
要求:
1、不能使用系统自带函数直接减
2、不能使用时间戳
3、日期格式是字符串类似2019-01-02格式,只考虑四位字符年份

解题分析:
此题目由于要求必须不能使用自带的方法,那么我就可以考虑拆分年、月、日分别来计算
那么年份所影响的条件有 闰年 与 非闰年。
因此我们就要分两种情况来考虑:
1.同年 -> 差值为 0;
2.非同年 -> 差值为非 0;
最后分年、月、日计算对应的差值 * 天数即可;
"""


class DateSub(object):

    def is_leap_year(self, year):
        """
        判断是否是闰年
        :param year:
        :return:
        """
        if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
            return True
        else:
            return False

    def date_sub(self, date1, date2):
        """
        计算两个日期的差值,考虑是否包含闰年
        :param date