Преобразование строки utc в объект datetime

Я использую API Paypal, и я возвращаю временную метку в следующем формате. Он пытается разобрать это на объект 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

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

EDIT:

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

Ответ 1

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

Ответ 2

Синтаксический анализатор from 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

Ответ 3

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

>>> datetime.strptime('2012-03-01T10:00:00Z','%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2012, 3, 1, 10, 0)

Ответ 4

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

%m  Month as a decimal number [01,12].   
%M  Minute as a decimal number [00,59].