简体   繁体   中英

count the number of days between two dates

I am counting number of days between two dates.For first testcase output is wrong 10108 expected output 10109 In first test case 1 day is missing in output

from typing import*
class Solution:
    def daysBetweenDates(self, date1: str, date2: str) -> int:
        d1 = self.days(int(date1[:4]),int(date1[5:7]),int(date1[8:]))
        d2 = self.days(int(date2[:4]),int(date2[5:7]),int(date2[8:]))
        return abs(d2-d1)
def isLeap (self, N):
    if N % 400 == 0:
        return True
    if N % 100 == 0:
        return False
    if N % 4 != 0:
        return False
    return True

def days(self, year,month,rem_days):
    months_list = [31,28,31,30,31,30,31,31,30,31,30,31]
    days_count = 0
    for i in range(1971,2101):
        if year > i:
            if self.isLeap(i):
                days_count += 366
            else:
                days_count += 365
        else:
            break

    if self.isLeap(year) and month > 2:
        days_count += 1
    for j in range(1,month):
        if month > j:
            days_count += months_list[j]
    return days_count + rem_days
vals = Solution()
print(vals.daysBetweenDates("2010-09-12","1983-01-08"))
print(vals.daysBetweenDates("2019-06-29", "2019-06-30"))
print(vals.daysBetweenDates("2020-01-15", "2019-12-31"))

The month starts at one, you get the number of days for each month from the wrong index (1 for January when the correct index is 0...). Subtract one when you look up the days for each month

for j in range(1, month):
    days_count += months_list[j - 1]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM