#python
Вопрос:
Я пытаюсь преобразовать его простым способом, используя str (), но это не работает. Как я могу это сделать?
import json
import datetime
def lambda_handler(event, context):
lastUpdate="2020-09-17 03:59:21 00:00"
now = datetime.datetime.now().replace(tzinfo=datetime.timezone.utc)
diff = now - lastUpdate
print("Now:" str(now) lastUpdate)
Выход:
Сообщение об ошибке»: «неподдерживаемые типы операндов для -: ‘datetime.datetime’ и ‘str'»,
Ответ №1:
получите часовой пояс utc и формат строки, как показано ниже:
from datetime import datetime, timezone
lastUpdate="2020-09-17 03:59:21 00:00"
now2 = datetime.now(timezone.utc).strftime("%Y%m%d %H:%M:%S")
print("Now:" str(now2) lastUpdate)
для получения различий, пожалуйста, разберите строку на два объекта datetime и рассчитайте различия в днях.
now3 = datetime.now(timezone.utc)
day = datetime.strptime(lastUpdate, '%Y-%m-%d %H:%M:%S%z')
print("now3= " str(now3))
print("day= " str(day))
diffs = now3 - day
print('Total difference in minutes: ', str(diffs.days))
print("Now:" str(now3) " " lastUpdate "Diff= " str(diffs.days))
Комментарии:
1. Спасибо за ваш ответ. Когда я поступаю так, как ты, я получаю
"unsupported operand type(s) for -: 'str' and 'datetime.datetime'"
. Я не ставил здесь переменную diff, так как у нее не было проблем. Как я могу это решить?print("Now:" now "LastModified:" obj['LastModified'] "Diff=" diff)
2. Преобразуйте все в строку, скорее всего, ваше «сейчас» и «по-прежнему» в формате даты-времени. просто используйте str( ) для объекта datetime.
Ответ №2:
Тип данных «сейчас» — это дата-время, а «Последняя дата» — str, вы не можете получить разницу между разными типами данных. Сначала преобразуйте LastUpdate в формат datetime.
import json
from datetime import datetime, timezone
from dateutil import parser
def lambda_handler(event, context):
lastUpdate="2020-09-17 03:59:21 00:00"
lastUpdate = parser.parse("2020-09-17 03:59:21 00:00")
now = datetime.now(timezone.utc)
diff = now - lastUpdate
print("Now:" str(now) str(lastUpdate))
Ответ №3:
коды формата strftime и strptime
from datetime import datetime
lastUpdate = "2020-09-17 03:59:21 00:00"
dt: datetime = datetime.strptime(lastUpdate, "%Y-%m-%d %H:%M:%S%z")
print(repr(dt))
# datetime.datetime(2020, 9, 17, 3, 59, 21, tzinfo=datetime.timezone.utc)
dt_str = dt.strftime("%Y-%m-%d %H:%M:%S")
print(repr(dt_str))
# '2020-09-17 03:59:21'