2013-05-07 10 views
0

Я пытаюсь преобразовать timestamp кортеж из dpkt в экземпляр datetime.Время tuple в 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) 

Есть ли более простой способ?

+3

Да, это перебор. :-) –

ответ

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) 
Смежные вопросы