如何通过strptime解析这个字符串

时间:2015-04-09 21:55:12

标签: python python-3.x strptime

Somtetimes我看到日期字符串如"2015-04-09T10:59:22Z"。 什么是“T”和“Z”字符?如何通过python的time.strptime解析这个字符串?

4 个答案:

答案 0 :(得分:1)

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)

答案 1 :(得分:1)

from dateutil.parser import parse as date_parse
print date_parse("2015-04-09T10:59:22Z")

它不使用strptime ......但你不需要担心日期格式

(哦,是的,你可能需要pip install python-dateutil):P

答案 2 :(得分:1)

strptime在其man pageman strptime)和on python.org中提供了出色的文档。

你必须告诉我们多余的字符是什么意思,因为我们不知道字符串的来源。但是,假设TZ没有任何特殊意义:

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

应该这样做。

编辑:Z是时区缩写;因此尾随%Z

EDIT2:如果python的strptime刚刚理解%Z,那就好了。你必须将它忽略为常数(表示UTC,如果我没有完全弄错的话)

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

EDIT3: Z ulu time,正如我所知道的那样。

答案 3 :(得分:0)

其他答案有效并且是正确的,是的,“Z”适用于Zulu,这是一种旧的参考UTC的方式。

使用标准库解析字符串的问题,甚至用Z替换UTC仍然会呈现时区天真日期时间对象。这是我用来创建时区感知日期时间对象

的工作
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))))