Как преобразовать `2020-04-06T09: 04: 52.610 + 02: 00` в` datetime.datetime` в Python3? - PullRequest
1 голос
/ 06 апреля 2020

Как преобразовать 2020-04-06T09:04:52.610+02:00 в datetime.datetime в Python3?

Я знаю, что strptime используется для преобразования str в datetime тогда как strftime используется для преобразования datetime в str.

В Интернете есть много примеров, например datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p').

Моя проблема в следующей части времени: T09:04:52.610+02:00. Я не могу найти какой-либо разумный код формата в http://strftime.org/, который соответствует ему.

Если бы у меня был соответствующий код формата, я написал бы что-то вроде:

datetime.strptime('2020-04-06T09:04:52.610+02:00', '%Y-%m-%d%X'), где %X будет соответствовать T09:04:52.610+02:00 части.

1 Ответ

3 голосов
/ 06 апреля 2020

Это дата, отформатированная в формате ISO, поэтому просто go впереди и используйте datetime.fromisoformat:

>>> import datetime as dt
>>> dt.datetime.fromisoformat("2020-04-06T09:04:52.610+02:00")
datetime.datetime(2020, 4, 6, 9, 4, 52, 610000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200)))

Что касается strptime, вторым аргументом в основном является любая строка с некоторым специальные маркеры в нем (например, %b). Вы можете идеально включить любые символы в эту строку, поэтому также работает следующее (хотя, очевидно, fromisoformat - это путь к go):

>>> dt.datetime.strptime("2020-04-06T09:04:52.610+02:00", "%Y-%m-%dT%H:%M:%S.%f%z")
datetime.datetime(2020, 4, 6, 9, 4, 52, 610000, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...