3

我有以这种格式返回日期的 url

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

但我不断收到诸如“时间数据 2015-01-12T08:43:02Z 不匹配...”之类的错误

4

2 回答 2

5

您在最后一次尝试中接近“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)
于 2015-10-28T17:01:53.203 回答
5

您正在寻找的格式是 - '%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)

对于评论中的新要求 -

如果我想用 2015-01-12:08:43:02 中的字符串找回时间,哪些方法应该在 datetime().datetime() 之后

您需要使用格式为 -.strftime()的对象。例子 -datetime.datetime'%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)
于 2015-10-28T17:02:08.607 回答