2013-05-07 36 views
0

我試圖將時間戳元組從dpkt轉換爲日期時間實例。時間元組到日期時間

時間戳看起來像(seconds, microseconds)。這是我目前正在做的,但它似乎過度殺傷:

from datetime import datetime as dt 
ts = (1296770576, 247792) 

ts_list = [str(item) for item in ts] 
ts_list[1] = ts_list[1].zfill(6) #make sure we have 6 digits 
ts_str = ".".join(ts_list) 
ts_float = float(ts_str) 
ts_dt = dt.fromtimestamp(ts_float) 

有沒有更簡單的方法?

+3

是的,這是矯枉過正。 :-) – 2013-05-07 08:42:11

回答

3

只需使用秒部分,然後更新與微秒部分DateTime對象,使用.replace() method

dt.fromtimestamp(ts[0]).replace(microsecond=ts[1]) 

演示:

>>> from datetime import datetime as dt 
>>> ts = (1296770576, 247792) 
>>> dt.fromtimestamp(ts[0]).replace(microsecond=ts[1]) 
datetime.datetime(2011, 2, 3, 23, 2, 56, 247792) 

如果你是永遠有你的(seconds, microseconds)元組轉換浮點時間戳,只需使用浮點除法:

>>> ts_float = float(ts[0]) + float(ts[1])/1000000 
>>> dt.fromtimestamp(ts_float) 
datetime.datetime(2011, 2, 3, 23, 2, 56, 247792)