#python #datetime #timedelta
#python #datetime #timedelta
Вопрос:
У меня есть переменная datetime, и я хочу вычесть из нее всего 1 час. Я попытался сделать это с помощью приведенного ниже кода, но я получил следующую ошибку: TypeError: unsupported operand type(s) for -: 'str' and 'datetime.timedelta'
from datetime import datetime, timedelta
cur_time = datetime.now()
cur_time_f = cur_time.strftime("%Y-%m-%dT%H:%M:%SZ")
print(cur_time_f)
>> 2020-09-15T09:07:44Z
nueve = cur_time_f - timedelta(hours=1)
print(nueve)
Мой ожидаемый результат:
>> 2020-09-15T08:07:44Z
Комментарии:
1. Вы пробовали использовать
cur_time
вместоcur_time_f
?2. @mkrieger1 Да, это работает. Но мне нужен формат, который я использую в
cur_time_f
3. Вы пробовали использовать
strftime
withnueve
?4. @mrkieger1 Что ты имеешь в виду?
5. Строка — это строка, вы не можете выполнять с ней вычисления времени.
datetime
Объект — это то, с чем вы можете выполнять вычисления времени. Вы можете отформатироватьdatetime
объект в строку с помощьюstrftime
. Выполняйте свои вычисления дляdatetime
объектов и форматируйте их, используяstrftime
тогда и только тогда, когда вы хотите это вывести.
Ответ №1:
Выполните вычисление, ПРЕЖДЕ чем превратить его в строку
from datetime import datetime, timedelta
cur_time = datetime.now()
print(cur_time)
>>2020-09-15 11:29:51.756391
cur_time = cur_time - timedelta(hours=1)
cur_time_f = cur_time.strftime("%Y-%m-%dT%H:%M:%SZ")
print(cur_time_f)
>>2020-09-15T10:29:51Z