2015-10-28 93 views
3

我的网址,在此格式返回日期的Python解析日期strptime

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不匹配......”

+0

相关:[?如何解析ISO在Python 8601格式的日期(http://stackoverflow.com/q/127803/4279) – jfs

回答

4

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

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

>>> 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) 
+0

谢谢,只是一个简单的问题..如果我想在2015-01-12:08:43:02中得到​​一段时间,那么应该在datetime()之后使用哪些方法datetime() –

+0

您希望得到的结果如下一个字符串?并以那种格式?如果是这样,请检查上面给出的'.strftime()'示例。 –

+0

我只是想要它作为字符串,就像你第一个例子'2015-01-12:08:43:02'我刚刚尝试btw,我得到'错误,所需参数'格式'(pos 1)没有找到' –

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) 
+0

谢谢,只是一个快速的问题..如果我想要在'2015-01-12:08:43:02'中找回字符串的时间,应该在'datetime()。datetime()'之后使用哪些方法。 –

+0

简而言之,我想提交时间到数据库,'DATETIME'字段不能接受超过特定的数字位数,即'2015-10-4:06:13:22'所以我只想想知道它是如何得到回 –

+0

所以你想将它从__日期时间,_to_字符串?使用'datetime_obj.strftime(“%Y-%m%d:%H:%M:%S”)'。 – Kevin