Как я могу преобразовать дату в строку в python?

#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-поведение

коды формата 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'