Как разобрать эту строку по 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))))