2013-07-05 26 views
3

我有一個帶有「2012-05-12T13:04:35.347-07:00」時間戳的日誌文件。我想將每個時間戳轉換爲一個數字,以便根據時間按升序對它們進行排序。在Python中轉換「yyyy-MM-dd'T'HH:mm:ss.SSSZ」格式的時間戳

我該如何在Python中做到這一點?在Java中,我發現我可以將這種格式的時間戳轉換爲SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"),但對於Python我找不到任何東西。

+1

'012'? YYY是一種實際的時間格式?請告訴我,這是一個複製+粘貼錯誤。 – Droogans

+0

這幾乎是ISO8601中指定的格式(猜測你做了一些小的轉錄錯誤),並按字母順序排序,等於按時間順序排序,所以也許你根本不需要轉換... – fvu

+0

哦,是的,對不起。我在開始時錯過了「2」,應該是「2012-05-12T13:04:35.347-07:00」。所以如果我只是將它們排序爲字符串,我會得到相同的順序與轉換爲時間格式? – user1048858

回答

2

由於py2.x具有與%z指令您對做這樣的事情的問題:

from datetime import timedelta,datetime 
strs = "2012-05-12T13:04:35.347-07:00" 
#replace the last ':' with an empty string, as python UTC offset format is +HHMM 
strs = strs[::-1].replace(':','',1)[::-1] 

由於datetime.striptime不支持%z(UTC偏移)(至少在py2.x) ,所以你需要一個解決辦法:

#Snippet taken from http://stackoverflow.com/a/526450/846892 
try: 
    offset = int(strs[-5:]) 
except: 
    print "Error" 

delta = timedelta(hours = offset/100) 

現在應用格式:'2012-05-12T13:04:35.347'

相關問題