Как преобразовать объект `datetime` в строку с форматом ISO 8601?

Для преобразования объекта 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
  
0