Выполнение расчетов со временем с использованием datetime.timedelta

1

Я пытаюсь сделать простые вычисления со временем, используя следующий код:

from datetime import datetime
from datetime import timedelta

time = datetime.strptime('12:00:00', '%H:%M:%S').time()
endtime = time + datetime.timedelta(minutes = 5)
print(type(endtime))

Однако, когда я запускаю код, я получаю следующую ошибку:

AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'

Также использование только следующего дает ошибку. Я надеюсь, что кто-нибудь знает решение.

endtime = time + timedelta(minutes = 5)
  • 1
    Лично я всегда использую import datetime as dt для a) за исключением того, что нет необходимости вводить datetime все время и b) чтобы не запутаться в том, относится ли datetime к модулю или классу
  • 1
    Удалите .time() и используйте endtime = time + timedelta(minutes = 5) .
Теги:
python-datetime
timedelta

1 ответ

0
Лучший ответ

Вы импортировали datetime.timedelta напрямую из datetime с помощью:

from datetime import timedelta

Так что вы можете просто использовать его прямо сейчас:

endtime = time + timedelta(minutes = 5)

Вы также не можете + timedelta объект datetime.time с помощью timedelta, поэтому вам нужно сохранить его как объект datetime.datetime, удалив .time():

 time = datetime.strptime('12:00:00', '%H:%M:%S')

Рабочий код:

from datetime import datetime
from datetime import timedelta

time = datetime.strptime('12:00:00', '%H:%M:%S')
endtime = time + timedelta(minutes = 5)
print(type(endtime))
# <class 'datetime.datetime'>

Другой способ сделать это - просто импортировать datetime в качестве стандартного импорта:

import datetime

time = datetime.datetime.strptime('12:00:00', '%H:%M:%S')
endtime = time + datetime.timedelta(minutes = 5)
print(type(endtime))
# # <class 'datetime.datetime'>

Увеличенное время:

print(endtime.strftime('%H:%M:%S'))
# 12:05:00

Использование datetime.datetime.strftime.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню