2015-10-28 158 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