2013-02-28 53 views
1

在處理日誌文件時,我需要比較epoc和人類可讀的時間戳。Python中的時代轉換

epoc=time.strftime("%d.%m.%Y %H:%M - %Z", time.localtime(1358252743927)) 
print epoc 

t1=time.gmtime(1358252743927) 
print t1 

都返回類似

26.04.45011 22:52 - CEST

而使用this site回報

轉換
GMT: Tue, 15 Jan 2013 12:25:43 GMT 
Your time zone: 1/15/2013 1:25:43 PM GMT+1 

這是正確的時間 - 但不知何故Python不能處理這個時間戳。

有沒有人有一個想法如何時間戳來獲得後者的結果轉換?

回答

3

看起來是時間戳你那裏有它毫秒,則gmtitme功能無法處理。你提到的網站可以。如果你刪除了這個龐大數字的最後三位數字,該網站仍然會給你相同的結果,因爲它不相信,你真的想要45011.

所以只需將數字除以1000之後再通過它(如果你確定,你總是那麼高的分辨率),以及你的罰款:

t1 = time.gmtime(1358252743.927) 
print t1 

給出:

time.struct_time(tm_year=2013, tm_mon=1, tm_mday=15, tm_hour=12, tm_min=25, tm_sec=43, tm_wday=1, tm_yday=15, tm_isdst=0) 

這似乎罰款。

2

Python的處理劃時代秒時間,我懷疑,看你有多大的時間戳,即以毫秒爲單位來代替。

如果你把最後3位數字,你會得到預期的時間:

>>> value = 1358252743927 
>>> import time 
>>> time.strftime("%d.%m.%Y %H:%M - %Z", time.localtime(value/1000)) 
'15.01.2013 13:25 - CET' 

(零下與Python知道的時區的問題)。