0

タイムスタンプ タプルをdpktから datetime インスタンスに変換しようとしています。

タイムスタンプは のようになり(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

.replace()秒の部分を使用してから、次のメソッドを使用して、マイクロ秒の部分で 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)

タプルを float タイムスタンプに変換する必要があった場合は(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 に答える