53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
|
def add_time(start, duration, day="none"):
|
||
|
# Split the input variables into useful numbers
|
||
|
start = start.split(":")
|
||
|
duration = duration.split(":")
|
||
|
start_hrs = int(start[0])
|
||
|
start_mins = int(start[1].split(" ")[0])
|
||
|
start_am_pm = start[1].split(" ")[1]
|
||
|
duration_hrs = int(duration[0])
|
||
|
duration_mins = int(duration[1])
|
||
|
|
||
|
if start_am_pm.lower() == "pm": start_hrs = start_hrs + 12 # Convert to 24 hour format because that makes more sense
|
||
|
|
||
|
new_hrs = start_hrs + duration_hrs
|
||
|
new_mins = start_mins + duration_mins
|
||
|
dayslater = 0
|
||
|
|
||
|
# make sure minutes are under 60 and hours get adjusted for every 60 extra minutes
|
||
|
while new_mins > 59:
|
||
|
new_mins = new_mins - 60
|
||
|
new_hrs = new_hrs + 1
|
||
|
|
||
|
# make sure hours are under 24 and days get adjusted for every 24 extra hours
|
||
|
while new_hrs > 23:
|
||
|
new_hrs = new_hrs - 24
|
||
|
dayslater = dayslater + 1
|
||
|
|
||
|
# Convert back to 12 hour format
|
||
|
if new_hrs > 12:
|
||
|
new_hrs = new_hrs - 12
|
||
|
new_am_pm = "PM"
|
||
|
elif new_hrs == 12:
|
||
|
new_am_pm = "PM"
|
||
|
else:
|
||
|
new_am_pm = "AM"
|
||
|
|
||
|
if new_hrs == 0 and new_am_pm == "AM": new_hrs = 12 # Adjust for americans being really weird, why the hell is it 12AM and not 0???
|
||
|
|
||
|
newtime = str(new_hrs) + ":" + str(new_mins).zfill(2) + " " + new_am_pm # Build new timestring
|
||
|
|
||
|
if day != "none":
|
||
|
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
|
||
|
day = day.lower().title()
|
||
|
index = days.index(day)
|
||
|
new_index = (index + dayslater) % len(days) # wrap around the list to find new day
|
||
|
newtime = newtime + ", " + days[new_index] # add day to timestring
|
||
|
|
||
|
# add number of days to timestring
|
||
|
if dayslater == 1:
|
||
|
newtime = newtime + " (next day)"
|
||
|
elif dayslater > 1:
|
||
|
newtime = newtime + " (" + str(dayslater) + " days later)"
|
||
|
|
||
|
return newtime # done!
|