У меня есть такие значения, как отметки времени из библиотеки dpkt (когда приходят пакеты):
for ts, buffer in dpkt.pcap.Reader(file):
#whatever...
Считыватель выдает ts в десятичном формате, например:
print(repr(ts))
Decimal('1536310893.687185000')
Я пытаюсьпреобразовать его в datetime
, но я не получаю микросекунд (на самом деле наносекунды, но сейчас важны только микросекунды)
ts_dt = datetime.datetime.utcfromtimestamp(ts)
ts_dt
datetime.datetime(2018, 9, 7, 9, 1, 33)
По какой-то причине utcfromtimestamp
не учитывает дробную часть десятичной дробизначения.
Это ошибка?Это работало в Python 2.7
Я могу конвертировать Decimal
в float
, и это работает вроде как, но я ненавижу этот подход - поплавки имеют ограниченную точность.Скорее всего, в некоторых версиях это будет нарушено из-за незначительных изменений, или у меня будут неточные значения, что может привести к катастрофе, и устранение проблем будет огромной болью ... Я предпочитаю иметь точные значения и точные расчеты, когда это возможно (особеннов такой мелочи, как преобразование меток времени) ...
Так как сохранить микросекунды при конвертации Decimal
меток времени в datetime
?