Somtetimes我看到日期字符串如"2015-04-09T10:59:22Z"
。
什么是“T”和“Z”字符?如何通过python的time.strptime
解析这个字符串?
答案 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
page(man strptime
)和on python.org中提供了出色的文档。
你必须告诉我们多余的字符是什么意思,因为我们不知道字符串的来源。但是,假设T
和Z
没有任何特殊意义:
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))))