我正在尝试将时间戳元组从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)
有更简单的方法吗?
答案 0 :(得分:3)
只需使用秒部分,然后使用.replace()
method更新带有微秒部分的datetime对象:
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)