Skip to content

Commit 4a57357

Browse files
authored
Create number-of-days-between-two-dates.py
1 parent 6c27ace commit 4a57357

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Time: O(1)
2+
# Space: O(1)
3+
4+
class Solution(object):
5+
def __init__(self):
6+
def dayOfMonth(M):
7+
return (28 if (M == 2) else 31-(M-1)%7%2)
8+
9+
self.__lookup = [0]*12
10+
for M in xrange(1, len(self.__lookup)):
11+
self.__lookup[M] += self.__lookup[M-1]+dayOfMonth(M)
12+
13+
def daysBetweenDates(self, date1, date2):
14+
"""
15+
:type date1: str
16+
:type date2: str
17+
:rtype: int
18+
"""
19+
def num_days(date):
20+
Y, M, D = map(int, date.split("-"))
21+
leap = 1 if M > 2 and (((Y % 4 == 0) and (Y % 100 != 0)) or (Y % 400 == 0)) else 0
22+
return (Y-1)*365 + ((Y-1)//4 - (Y-1)//100 + (Y-1)//400) + self.__lookup[M-1]+D+leap
23+
24+
return abs(num_days(date1) - num_days(date2))
25+
26+
27+
# Time: O(1)
28+
# Space: O(1)
29+
import datetime
30+
31+
32+
class Solution2(object):
33+
def daysBetweenDates(self, date1, date2):
34+
delta = datetime.datetime.strptime(date1, "%Y-%m-%d")
35+
delta -= datetime.datetime.strptime(date2, "%Y-%m-%d")
36+
return abs(delta.days)

0 commit comments

Comments
 (0)