2013-09-28 46 views
0

我需要使用for循環找到表中日期/時間TrackLogs之間的時間差。在追蹤記錄條目的格式如下發現:Python:迭代日誌之間的時間差

2013-08-02T14:30:10Z 

我需要考慮的是,「對」,當它試圖計算第一循環的timeDiff失敗。因爲第一個日誌沒有前面的條目來執行計算。因此,我需要包含一個'if'語句(帶有布爾值)以允許腳本在找到第一個日誌時運行。

這是我這麼遠:

for row in cur: 
    period=row.tracklogs 
    year=period[0:4] 
    month=period[6:7] 
    day=period[8:10] 
    hour=period[11:13] 
    minut=period[14:16] 
    second=period[17:19] 
    print period 
    firstline="yes" 
    if firstline=="yes": 
     prev_period=row.tracklogs 
     prev_coord=row.shape 
     firstline="no" 
    else: 
     new_period=row.tracklogs 
     new_coord=row.shape 
     period1=datetime.datetime(int(prev_period)) 
     period2=datetime.datetime(int(new_period)) 
     timediff=(a2-a1).seconds 
     print timediff 

我想我需要的日期時間操作的整數,但後來我遇到以下異常:

line 36, in <module> 
    tid1=datetime.datetime(int(tidl_tid)) 
ValueError: invalid literal for int() with base 10: '2009-05-19T11:51:47Z' 

我知道我我做錯了什麼,但不知道它是什麼。任何幫助米讚賞。

+0

爲什麼你使用'month = period [6:7]'這樣的變量而不創建日期時間對象? http://docs.python.org/2/library/datetime.html –

+0

感謝您的指針! – GeoLuCa

回答

1

您試圖將字符串2009-05-19T11:51:47Z轉換爲整數,其中字符串不是正確的基數10數字。所以Python正在拋出錯誤

你需要解析你的日期字符串並獲取必要的日期時間對象。

假設

date_string = "2009-05-19T11:51:47Z" 

要麼做

from dateutil import parser 
d1 = parser.parse(date_string) 

from datetime import datetime 
d1 = datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%SZ") 

,並使用下一個命令來獲得在幾秒鐘內兩個日期D1和D2之間的差別

(d1-d2).total_seconds() 
+0

非常感謝@ ansh0l。我會嘗試的。 – GeoLuCa