Преобразование строки времени utc в объект datetime - PullRequest
20 голосов
/ 24 февраля 2012

Я использую Paypal API и получаю метку времени в следующем формате.Он пытается проанализировать это для объекта datetime, используя strptime, но я получаю следующую ошибку:

(Pdb) datetime.strptime('2012-03-01T10:00:00Z','%Y-%M-%dT%H:%M:%SZ')
*** error: redefinition of group name 'M' as group 5; was group 2

Кроме того, так как этот формат должен быть довольно стандартным, не существует функции, доступной для этого?

РЕДАКТИРОВАТЬ:

Ок, похоже, опечатка.Первый% M должен быть% m

Ответы [ 4 ]

39 голосов
/ 24 февраля 2012

Парсер из dateutil - это ваш друг.

Вам нужно будет установить dateutil в пипе, но вы сэкономите сумки и сумки с кодом преобразования даты:

pip install python-dateutil

вот так.

from dateutil import parser
ds = '2012-03-01T10:00:00Z' # or any date sting of differing formats.
date = parser.parse(ds)

Вы обнаружите, что с этим анализатором вы можете справиться практически с любыми форматами строк даты, и вы получите хорошую стандартную дату Python назад

12 голосов
/ 24 февраля 2012

Похоже, вы смешиваете %M (минута) и %m (месяц).

4 голосов
/ 24 февраля 2012

Проблема в том, что вы используете %M дважды. Используйте %m для месяцев:

>>> datetime.strptime('2012-03-01T10:00:00Z','%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2012, 3, 1, 10, 0)
2 голосов
/ 24 февраля 2012

У вас есть опечатка.%M используется дважды.Вы хотели использовать %m для месяца.Из документов :

%m  Month as a decimal number [01,12].   
%M  Minute as a decimal number [00,59].
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...