Разобрать строки даты rfc3339 в Python?

У меня есть наборы данных, где все даты имеют следующий формат:

2012-10-09T19:00:55Z

Я хотел бы иметь возможность использовать на них такие методы, как .weekday. Как преобразовать их в правильный формат в Python?

Ответ 1

Вы можете использовать dateutil.parser.parse для анализа строк в объектах datetime.

dateutil.parser.parse попытается угадать формат вашей строки, если вы заранее знаете точный формат, тогда вы можете использовать datetime.strptime, который вы предоставите в формате string (см. ответ Брент Уошберн).

from dateutil.parser import parse

a = "2012-10-09T19:00:55Z"

b = parse(a)

print(b.weekday())
# 1 (equal to a Tuesday)

Ответ 3

Вы должны взглянуть на moment который является портом Python превосходных momentjs js lib.

Одним из его преимуществ является поддержка форматов строк ISO 8601, а также общий формат "%":

import moment
time_string='2012-10-09T19:00:55Z'

m = moment.date(time_string, '%Y-%m-%dT%H:%M:%SZ')
print m.format('YYYY-M-D H:M')
print m.weekday

Результат:

2012-10-09 19:10
2