datetime в строку в формате ISO 8601 можно использовать метод isoformat():
  
  from datetime import datetime
  now = datetime.now()
  iso_string = now.isoformat()
  print(iso_string)
  strftime() с соответствующим форматом:
   
  from datetime import datetime
  now = datetime.now()
  iso_string = now.strftime('%Y-%m-%dT%H:%M:%S.%f%z') #Точность до микросекунд
  print(iso_string)
  isoformat() предоставляет более простой и прямой способ для этой задачи.
Для преобразования объекта datetime в строку с форматом ISO 8601 в Python существует несколько способов.  Самый рекомендуемый и простой - использование метода isoformat() объекта datetime:
  import datetime
  now = datetime.datetime.now()
  iso_string = now.isoformat()
  print(iso_string)  # Пример: 2023-10-27T10:30:00.123456
  Метод isoformat() по умолчанию возвращает строку в формате ISO 8601 с указанием даты, времени и микросекунд, разделенных символом T.  Он также может включать информацию о временной зоне, если объект datetime содержит эту информацию.
Если вам требуется более детальный контроль над форматом, можно использовать метод strftime() с соответствующими директивами форматирования, но это менее предпочтительно, так как isoformat() более лаконичен и семантически выражает требуемую конвертацию в ISO 8601.
  import datetime
  now = datetime.datetime.now()
  iso_string = now.strftime("%Y-%m-%dT%H:%M:%S.%f") # Включает микросекунды
  print(iso_string) # Пример: 2023-10-27T10:30:00.123456
  iso_string_no_microseconds = now.strftime("%Y-%m-%dT%H:%M:%S") # Без микросекунд
  print(iso_string_no_microseconds) # Пример: 2023-10-27T10:30:00
  Важно: Метод isoformat() является предпочтительным, когда нужно получить стандартный ISO 8601 формат.  Использование strftime() полезно, когда необходима нестандартная или специфическая вариация формата ISO 8601, но в большинстве случаев стандартный формат, предоставляемый isoformat(), вполне достаточен.
Работа с временными зонами: Если ваш объект datetime имеет информацию о временной зоне, isoformat() включит её в результирующую строку.  Убедитесь, что ваш объект datetime содержит корректную информацию о временной зоне, если это необходимо.
  import datetime
  import pytz #  Установка: pip install pytz
  utc_now = datetime.datetime.now(pytz.utc)
  iso_string_with_timezone = utc_now.isoformat()
  print(iso_string_with_timezone) # Пример: 2023-10-27T10:30:00.123456+00:00