Как извлечь время из модуля datetime и увеличить его

Я пытаюсь увеличить время. Для этого я удалил время из 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'

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
273
3

Ответы 3

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

from datetime import datetime, date, timedelta                                                                                                                                                                                                     

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

datetime не имеет атрибута под названием «объединить». И мне нужно увеличить на секунды ... например, 00:00:01, 00:00:02 .... 00:01:00 ...

mash 05.12.2018 12:16
from datetime import datetime
py_dude 05.12.2018 12:21

Вам нужны полные объекты 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. Он просто увеличивается от времени начала до времени окончания.

mash 05.12.2018 12:39

Вы также изменили его в условии цикла while? В вашем вопросе у вас есть while st_time < en_time, а теперь он должен быть while st_time.time() < en_time. И если вы также удалили .time() из переменной en_time, он должен быть while st_time.time() < en_time.time()

Ale Sanchez 05.12.2018 12:43

Можете ли вы предоставить данные в своем файле или что-то в этом роде? Трудно понять, что происходит, не видя своих тестовых данных. Нужна дополнительная информация.

Ale Sanchez 05.12.2018 12:54

Другие вопросы по теме