Python 正在用 strptime 解析日期

Python parsing date with strptime

我有url returns 这种格式的日期

url_date = "2015-01-12T08:43:02Z"

我不知道为什么会有字符串,将其作为 "2015-01-1208:43:02" 获取会更简单,使用

解析起来会更简单
datetime.datetime.strptime(url_date , '%Y-%m-%d')

但它不起作用。我试过

%Y-%m-%d
%Y-%m-%d-%H-%M-%S
%Y-%m-%d-%H-%M-%S-%Z

但我不断收到类似 "time data 2015-01-12T08:43:02Z does not match ..."

的错误

您在最后一次尝试中接近 "Z" - 您需要在格式字符串中指定 T、Z 和冒号文字值。

>>> import datetime
>>> url_date = "2015-01-12T08:43:02Z"
>>> datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2015, 1, 12, 8, 43, 2)

您要查找的格式是 - '%Y-%m-%dT%H:%M:%SZ' .

例子-

>>> url_date = "2015-01-12T08:43:02Z"
>>> import datetime
>>> datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2015, 1, 12, 8, 43, 2)

对于评论中的新要求-

if I wanted to get a time back with the strings as in 2015-01-12:08:43:02 which methods should after datetime().datetime()

您需要在 datetime.datetime 对象上使用 .strftime(),格式为 - '%Y-%m-%d:%H:%M:%S'。示例 -

>>> url_date = "2015-01-12T08:43:02Z"
>>> dt = datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
>>> dt.strftime('%Y-%m-%d:%H:%M:%S')
'2015-01-12:08:43:02'

如果你想要时间组件,你可以使用 .time()。示例 -

>>> dt = datetime.datetime.strptime(url_date , '%Y-%m-%dT%H:%M:%SZ')
>>> dt.time()
datetime.time(8, 43, 2)