Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Days Between by Rounin
def daysInYear(year):
return 366 if (year%400 == 0 or (year%100 != 0 and year%4 == 0)) else 365
def daysInMonth(month, year):
if month == 2:
return (29 if daysInYear(year) == 366 else 28)
return (31 if (month+1 if month >= 8 else month) & 1 == 1 else 30)
def days_diff(date1, date2):
date1, date2 = list(min(date1, date2)), list(max(date1, date2))
diff = 0
while date1[0] < date2[0]:
diff += daysInYear(date1[0] + (1 if date1[1] >= 3 else 0))
date1[0] += 1
while date1[1] < date2[1]:
diff += daysInMonth(date1[1], date1[0])
date1[1] += 1
while date1[1] > date2[1]:
diff -= daysInMonth(date1[1]-1, date1[0])
date1[1] -= 1
diff += date2[2] - date1[2]
return diff
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert days_diff((1982, 4, 19), (1982, 4, 22)) == 3
assert days_diff((2014, 1, 1), (2014, 8, 27)) == 238
assert days_diff((2014, 8, 27), (2014, 1, 1)) == 238
Aug. 5, 2017