Попробуйте, если вы хотите использовать только time()
для базового времени:
import datetime
arrival = 20
base = datetime.time(7, 0, 0) # 07:00:00 or whatever your base time is.
actual_arrival = datetime.time(base.hour, base.minute + arrival, base.second)
Это выводит:
07:20:00
РЕДАКТИРОВАТЬ: Примечаниечто в подходе выше аргументы time()
должны быть действительными, и если ваша минута станет больше 59, она не будет работать.В качестве обходного пути вы можете определить вспомогательную функцию для этого:
def add_times(op1, op2): # two tuples in this format: (h, m, s)
hour = op1[0] + op2[0]
minute = op1[1] + op2[1]
second = op1[2] + op2[2]
if second >= 60:
minute += 1
second -= 60
if minute >= 60:
hour += 1
minute -= 60
if hour >= 24:
hour -= 24
return (hour, minute, second)
и изменить код на:
base_time = (7, 0, 0) # (hour, minute, seconds)
base = datetime.time(*base_time) # If you want to have it as a time object in your code. It is redundant now.
actual_arrival = datetime.time(*add_times(base_time, (0, 20, 0)))
Но я думаю, что это уже не datetime
подходчтобы решить вашу проблему.