How to calculate number of days between two given dates?

前端 未结 13 1481
梦如初夏
梦如初夏 2020-11-22 06:29

If I have two dates (ex. \'8/18/2008\' and \'9/26/2008\'), what is the best way to get the number of days between these two dates?

13条回答
  •  执笔经年
    2020-11-22 06:41

    Without using datetime object in python.

    # A date has day 'd', month 'm' and year 'y' 
    class Date:
        def __init__(self, d, m, y):
                self.d = d
                self.m = m
                self.y = y
    
    # To store number of days in all months from 
    # January to Dec. 
    monthDays = [31, 28, 31, 30, 31, 30,
                                                31, 31, 30, 31, 30, 31 ]
    
    # This function counts number of leap years 
    # before the given date 
    def countLeapYears(d):
    
        years = d.y
    
        # Check if the current year needs to be considered 
        # for the count of leap years or not 
        if (d.m <= 2) :
                years-= 1
    
        # An year is a leap year if it is a multiple of 4, 
        # multiple of 400 and not a multiple of 100. 
        return int(years / 4 - years / 100 + years / 400 )
    
    
    # This function returns number of days between two 
    # given dates 
    def getDifference(dt1, dt2) :
    
        # COUNT TOTAL NUMBER OF DAYS BEFORE FIRST DATE 'dt1' 
    
        # initialize count using years and day 
        n1 = dt1.y * 365 + dt1.d
    
        # Add days for months in given date 
        for i in range(0, dt1.m - 1) :
                n1 += monthDays[i]
    
        # Since every leap year is of 366 days, 
        # Add a day for every leap year 
        n1 += countLeapYears(dt1)
    
        # SIMILARLY, COUNT TOTAL NUMBER OF DAYS BEFORE 'dt2' 
    
        n2 = dt2.y * 365 + dt2.d
        for i in range(0, dt2.m - 1) :
                n2 += monthDays[i]
        n2 += countLeapYears(dt2)
    
        # return difference between two counts 
        return (n2 - n1)
    
    
    # Driver program 
    dt1 = Date(31, 12, 2018 )
    dt2 = Date(01, 01, 2019 )
    
    print(getDifference(dt1, dt2), "days")
    

提交回复
热议问题