Как разобрать эту строку по strptime

Иногда я вижу подобные строки "2015-04-09T10:59:22Z", Что такое "T" и "Z" символы здесь? Как разобрать эту строку по python time.strptime?

4 ответа

astr = "2015-04-09T10:59:22Z"
time.strptime(astr, '%Y-%m-%dT%H:%M:%SZ')
## returns time.struct_time(tm_year=2015, tm_mon=4, tm_mday=9, tm_hour=10, tm_min=59, tm_sec=22, tm_wday=3, tm_yday=99, tm_isdst=-1)
from dateutil.parser import parse as date_parse
print date_parse("2015-04-09T10:59:22Z")

он не использует strptime ... но вам не нужно беспокоиться о формате даты

(о да, вам может понадобиться pip install python-dateutil):П

strptime имеет отличную документацию в своем man страница (man strptime) и на python.org.

Вы должны будете сказать нам, что означают дополнительные символы, потому что мы не знаем, откуда взялась строка. Тем не менее, предполагая, T а также Z ничего особенного

time.strptime(your_date, '%Y-%m-%dT%H:%M:%S%Z')

должен сделать свое дело.

РЕДАКТИРОВАТЬ: Z является сокращением часового пояса; отсюда отставание %Z,

EDIT2: ах, если питона strptime только что понял %Z, Вам придется игнорировать его как постоянный (означает UTC, если я не полностью ошибаюсь)

time.strptime(your_date, '%Y-%m-%dT%H:%M:%SZ')

РЕДАКТИРОВАТЬ3: Zlu время, как я узнал.

Другие ответы работают и являются правильными, и да, "Z" для Зулу, старого способа обозначения UTC.

Проблема разбора со стандартной библиотекой строки, даже заменив Z с UTC по-прежнему визуализирует наивный объект datetime часового пояса. Это обходной путь, который я использую для создания объекта datetime с учетом часового пояса.

from datetime import datetime, timedelta, timezone
time_string = '1582-10-04T12:34:56.789Z'
timeformat = '%Y-%m-%dT%H:%M:%S.%fZ'
datetime.strptime(time_string, timeformat).replace(tzinfo=(timezone(timedelta(0))))
# or in your case
time_string = '2015-04-09T10:59:22Z'
timeformat = '%Y-%m-%dT%H:%M:%SZ'  # No microseconds
datetime.strptime(time_string, timeformat).replace(tzinfo=(timezone(timedelta(0))))
Другие вопросы по тегам