0

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"))
  • Does this answer your question? [How to calculate number of days between two given dates](https://stackoverflow.com/questions/151199/how-to-calculate-number-of-days-between-two-given-dates) – sahasrara62 Dec 29 '21 at 06:31

1 Answers1

0

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]
Iain Shelvington
  • 31,030
  • 3
  • 31
  • 50