Task given: I need to get the next date from the current date (d, m, y) and return a tuple of integer (day, month, year).
Here's my code:
def next_date(d, m, y):
if m == 12 and d == 31:
d, m, y = 1, 1, y+1
elif m == 1 or m == 3 or m == 5 or m == 7 or m == 8 or m== 10:
if d == 31:
d, m, y = 1, m+1, y
elif d > 31:
return 'No such date exist'
else:
d, m, y = d + 1, m, y
elif m== 4 or m == 6 or m == 9 or m == 11:
if d == 30:
d, m, y = 1, m+1, y
elif d > 30:
return 'No such date exist'
else:
d, m, y = d+1, m, y
elif m == 2:
if is_leap_year(y) and d == 29:
d, m, y = 1, 3, y
elif is_leap_year(y) and d == 28:
d,m,y = 29, m, y
if not is_leap_year(y):
if d == 28:
d, m, y = 1, 3, y
if d > 28:
return 'No such date exist'
else:
d, m, y = d + 1, m, y
return (d,m,y)
Is there a simpler code than this such that it will not give me an infinite loop? Thanks a lot.