Как преобразовать часовой пояс в формат времени и ISO 8601 в python?

Как преобразовать строку временной зоны типа 2022-06-23T05:00:00.006417+00:00Z в формат datetime и ISO 8601?

Разве это уже не формат ISO?

Чтобы разобрать его

В любом случае, поскольку он находится в ISO, вы можете использовать datetime.fromisoformat(docs), чтобы разобрать его, поскольку он выглядит как формат iso.

Следующие примеры из документации:

>>> from datetime import datetime
>>> datetime.fromisoformat('2011-11-04')
datetime.datetime(2011, 11, 4, 0, 0)
>>> datetime.fromisoformat('2011-11-04T00:05:23')
datetime.datetime(2011, 11, 4, 0, 5, 23)
>>> datetime.fromisoformat('2011-11-04 00:05:23.283')
datetime.datetime(2011, 11, 4, 0, 5, 23, 283000)
>>> datetime.fromisoformat('2011-11-04 00:05:23.283+00:00')
datetime.datetime(2011, 11, 4, 0, 5, 23, 283000, tzinfo=datetime.timezone.utc)
>>> datetime.fromisoformat('2011-11-04T00:05:23+04:00')   
datetime.datetime(2011, 11, 4, 0, 5, 23,
    tzinfo=datetime.timezone(datetime.timedelta(seconds=14400)))

Альтернативно, если это другой формат, вы можете использовать datetime.strptime (docs), заданный некоторым форматом

Чтобы отформатировать его

Для iso-форматирования можно использовать datetime.isoformat (docs).

Следующие примеры из документации:

>>> from datetime import datetime, timezone
>>> datetime(2019, 5, 18, 15, 17, 8, 132263).isoformat()
'2019-05-18T15:17:08.132263'
>>> datetime(2019, 5, 18, 15, 17, tzinfo=timezone.utc).isoformat()
'2019-05-18T15:17:00+00:00'

Вот функция, которая преобразует строки типа 2022-06-23T05:00:00.006417+00:00 в объекты времени даты.

import datetime
def str_to_datetime(str_time):
    return datetime.datetime.strptime(str_time, '%Y-%m-%dT%H:%M:%S.%f%z')

Мне кажется, что в вашей строке есть лишняя буква Z.

Вернуться на верх