Я пытаюсь увеличить время. Для этого я удалил время из datetime и попытался добавить это. Но это вызывает исключение. Что здесь не так?
st_time = datetime.datetime.strptime(st_time, '%H:%M:%S').time()
en_time = datetime.datetime.strptime(en_time, '%H:%M:%S').time()
while st_time < en_time:
if str(st_time) in line:
between = True
break
st_time = st_time + datetime.timedelta(seconds=1)
Исключение:
TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'
Что здесь не так?






попробуй это:
from datetime import datetime, date, timedelta
datetime.combine(date.today(), st_time) + timedelta(seconds=1)
from datetime import datetimeВам нужны полные объекты datetime. Не только время. Это ограничение дизайна, запрещающее перенос времени, гарантирующее, что
b = a + delta
a == b - delta
что будет нарушено, если дельта станет больше 24 часов.
Ваша проблема в этой части:
st_time = datetime.datetime.strptime(st_time, '%H:%M:%S').time()
Ошибка говорит о том, что вы не можете добавить тип datetime.time и тип timedelta. Смотрите, если вы это сделаете:
import datetime
a = datetime.datetime.now().time()
b = datetime.timedelta(seconds=1)
a+b
Это вызовет ошибку:
TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'
Но если вы вместо этого сделаете:
import datetime
# Notice there's no .time()
a = datetime.datetime.now()
b = datetime.timedelta(seconds=1)
a+b
Это будет работать.
Я внес изменения, и теперь он увеличивается. Но после увеличения мне нужна только временная часть (потому что файл, в котором я ищу, содержит только формат h: m: s). Итак, я проверяю так: for str(st_time.time()) in line: Но он не входит в цикл for. Он просто увеличивается от времени начала до времени окончания.
Вы также изменили его в условии цикла while? В вашем вопросе у вас есть while st_time < en_time, а теперь он должен быть while st_time.time() < en_time. И если вы также удалили .time() из переменной en_time, он должен быть while st_time.time() < en_time.time()
Можете ли вы предоставить данные в своем файле или что-то в этом роде? Трудно понять, что происходит, не видя своих тестовых данных. Нужна дополнительная информация.
datetime не имеет атрибута под названием «объединить». И мне нужно увеличить на секунды ... например, 00:00:01, 00:00:02 .... 00:01:00 ...