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)

有没有更简单的方法?

4

1 回答 1

3

只需使用秒部分,然后使用微秒部分更新 datetime 对象,使用.replace()方法

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)
于 2013-05-07T08:43:09.663 回答