In VS Code I pass all the test cases. What is wrong?
def add_time(start, duration, day = None):
start_time, period = start.split()
start_hour, start_minute = map(int, start_time.split(':'))
duration_hour, duration_minute = map(int, duration.split(':'))
#Calculate Total Mins
TotalMins = start_hour * 60 + start_minute
TotalMins += duration_hour * 60 + duration_minute
#Calculate New Time
NewHour = TotalMins // 60 % 12
NewMin = TotalMins % 60
new_period = period
#calculate period
days_later = TotalMins // (60 * 24)
#if TotalMins // 60 >= 12:
#new_period = 'PM' if period == 'AM' else 'AM'
#if new_period == 'AM':
# days_later = 1
periods_passed = 0
if TotalMins % (12*60) >= 1:
periods_passed = TotalMins // (12*60)
if periods_passed % 2 != 0:
if period == "AM":
new_period = "PM"
else:
new_period = "AM"
if period == "PM" and periods_passed % 2 != 0:
days_passed = (periods_passed // 2) + 1
else:
days_passed = periods_passed // 2
#Calculate Days later
if days_passed == 1:
days_later = '(the next day)'
elif days_passed > 1:
days_later = f'{days_passed} days later'
if (NewHour > 12):
NewHour = NewHour - 12
# Format the new time
new_time = f"{NewHour if NewHour != 0 else 12}:{NewMin:02d} {new_period}"
# Add 'next day' or 'n days later' if applicable
if days_passed == 1:
new_time = f"{NewHour if NewHour != 0 else 12}:{NewMin:02d} {new_period} {days_later}"
if days_passed > 1:
new_time = f"{NewHour if NewHour != 0 else 12}:{NewMin:02d} {new_period} ({days_passed} days later)"
if day:
days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
start_day_index = days.index(day.lower().capitalize())
new_day_index = (start_day_index + days_passed) % 7
new_day = days[new_day_index]
new_time = f"{NewHour if NewHour != 0 else 12}:{NewMin:02d} {new_period}, {new_day}"
if days_passed == 1:
new_time = f"{NewHour if NewHour != 0 else 12}:{NewMin:02d} {new_period}, {new_day} {days_later}"
if days_passed > 1:
new_time = f"{NewHour if NewHour != 0 else 12}:{NewMin:02d} {new_period}, {new_day} ({days_passed} days later)"
return new_time