2015-06-18 87 views
3

我有一個我調用的函數,它通過For循環產生一個事件的時間戳。Python時間匹配

功能,以及RAW時間戳

def atimer(): 
     timenow = time.time() 
     return(timenow) 

print timenow 
1434615010.27858 

時間戳看起來像這樣 「1434615010.27858」,這是在sqlite3的數據庫使用好和小。當我使用時間值轉換的時間戳,我得到的時間正確的聲明(見下文)..

轉換

>>> print datetime.datetime.fromtimestamp(1434615010.27858) 
2015-06-18 10:10:10.278580 

問題與此非常有效的問題是,我有要事的涌入是顯示爲下面的時間戳記打印輸出。

2015-06-18 11:36:57.830000 
2015-06-18 11:36:57.830000 
2015-06-18 11:36:57.830000 
2015-06-18 11:36:59.340000 
2015-06-18 11:36:59.340000 
2015-06-18 11:36:59.340000 
2015-06-18 11:37:00.740000 
2015-06-18 11:37:00.740000 
2015-06-18 11:37:00.740000 
2015-06-18 11:37:02.130000 

我想比較彼此的時間戳,然後只提交給定的分鐘的第一個數據庫(SQL更新)。

問題> Regex是我唯一的選擇,還是我可以調節這個時間戳本身,不給我這樣一個詳細的時間戳?

信息:我選擇這個時間戳的主要原因是它很小,佔用數據庫空間更少,特別是當你使用1000個時間時。

下面是我試圖讓在輸出...

2015-06-18 11:36 
2015-06-18 11:37 

在此先感謝

+0

爲什麼不在每次找到新分鐘時添加日期?時間是爲了是的? –

回答

1

爲什麼不乾脆把它們放到一個字典,這樣你只會得到每分鐘一次輸入:

times = [ 
    '2015-06-18 11:36:57.830000', 
    '2015-06-18 11:36:57.830000', 
    '2015-06-18 11:36:59.340000', 
    '2015-06-18 11:36:59.340000', 
    ] 

time_dict = {} 

for time in times: 
    time_dict[(time.split('.'))[0][:-3]] = 1 

print(time_dict.keys()) 

更好的是,您可以在翻譯日期之前創建字典。這樣,你只需要做轉換一次每同一條目:

times = [ 
    '1434615010.27858', 
    '1434615010.27858', 
    ] 

time_dict = {} 

for time in times: 
    time_dict[time] = 1 

for time in time_dict.keys(): 
    date = datetime.fromtimestamp(float(time)) 
    print((str(date).split('.')[0])[:-3]) 
+0

謝謝stevieb。更有意義。 –

+1

不客氣。我修正了代碼,所以它只適用於HH:MM,而不是你的原始問題,而不是像我在代碼中那樣使用HH:MM:SS。 – stevieb

1

您可以從每個日期刪除秒和毫秒來得到你想要的輸出:

import datetime 

aDate = datetime.datetime.fromtimestamp(1434615010.27858) 

print aDate 

aDate -= datetime.timedelta(seconds=aDate.second, microseconds=aDate.microsecond) 

print aDate 

此打印:

2015-06-18 05:10:10.278580 
2015-06-18 05:10:00 
+0

謝謝,非常有用。 –

+0

爲什麼你添加一個「 - 」infront of =? –

1

一個簡單的解決方案是記住你最後一件東西是什麼,只有在新的東西不同時纔打印出來:

lastTime = None 
while True: 
    thisTime = datetime.datetime.fromtimestamp(atimer()).strftime("%Y-%m-%d %H:%M") 
    if thisTime != lastTime: 
     print thisTime 
     lastTime = thisTime