2016-02-25 4 views
1

В настоящее время я пишу небольшое приложение питона, где я получаю дату в следующем формате (RFC3339) с веб-сервера:Python даты и времени часового пояса синтаксического анализа (RFC3339)

2016-01-29T20:00:00+01:00 

Я должен разобрать эту дату в объект питона даты и времени, и для этого я хотел бы использовать метод datetime.strptime где я должен указать формат даты, но я не знаю, как разобрать часовой пояс (+01: 00) Я попытался с:

datetime.strptime(strDate, "%Y-%m-%dT%H:%M:%S%z") 

но это не работает. Не могли бы вы рассказать мне, какую строку формата мне нужно использовать?

ответ

2

Вы можете использовать dateutil, однако, если вы используете Python 3 это работает только для 3.2 или 3.3. Он также поддерживает Python 2 на 2.6 и 2.7.

Решение, которое я хотел бы предложить:

from dateutil.parser import parse 

string = "2016-01-29T20:00:00+01:00" 

date = parse(string) 

Это даст вам объект DATETIME так:

Out[1]: 2016-01-29 20:00:00+01:00 
Out[2]: datetime.datetime(2016, 1, 29, 20, 0, tzinfo=tzoffset(None, 3600)) 

Если вы хотите узнать больше, проверить dateutil documentation.

Кроме того, я считаю, причина, по которой strptime не работает сразу, объясняется тем, что «T» на вашей строке даты. Это не формат strptime ожидает. Luckly dateutil метод parse работает прямо из коробки, чтобы исправить эту строку для вас.

1

Вы можете сделать это,

strDate = strDate.split('+') 

datetime.strptime(strDate[0], "%Y-%m-%dT%H:%M:%S") 

Это будет работать для вас

+1

... но отбрасывание часового пояса создает [наивный объект] (https://docs.python.org/3/library/datetime.html#module-datetime). Предположительно, OP хочет знать. – Chris

+0

Yaah я получил это @ Чарльз Дэвид анс ryt – Kjjassy

Смежные вопросы