Как извлечь время из модуля datetime и увеличить его - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь увеличить время.Для этого я снял время с даты и попытался добавить это.Но это исключение.Что здесь не так?

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'

Что здесь не так?

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Вам нужны полные объекты даты и времени.Не только время.Это конструктивное ограничение, запрещающее обтекание по времени, гарантирующее, что

b = a + delta
a == b - delta

будет нарушено, если дельта станет больше 24 часов.

0 голосов
/ 05 декабря 2018

Ваша проблема в этой части:

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

Это будет работать.

0 голосов
/ 05 декабря 2018

попробуйте это:

from datetime import datetime, date, timedelta                                                                                                                                                                                                     

datetime.combine(date.today(), st_time) + timedelta(seconds=1) 
...