2012-05-16 2 views
13

У меня есть несколько файлов журналов со временем в формате HH: MM :: SS.nano_seconds (например, 01: 02: 03.123456789). Я хотел бы создать datetime в python, чтобы я мог аккуратно выполнять математику по времени (например, принимать временные различия). strptime хорошо работает для микросекунд с использованием% f. Могут ли модули времени и времени Python не поддерживать наносекунды?Разбор строк datetime, содержащих наносекунды

+0

Возможный дубликат [Получить время POSIX/Unix в секундах и наносекундах в Python?] (Http://stackoverflow.com/questions/2394485/get-posix-unix-time-in-seconds-and-nanoseconds-in -python) –

+0

@MikePennington Этот вопрос связан с получением часов с наносекундами, а не с их анализом и математикой на них независимо от фактических часов. – Dougal

+0

@ Dougal, вопрос очень уместен, поскольку они указывают, что точность наносекундного времени требует поддержки платформы, а большинство нет. В этом вопросе также обсуждается строковое форматирование наносекунд –

ответ

13

Вы можете видеть from the source, что объекты datetime не поддерживают ничего более прекрасного, чем микросекунды. Как отметил Майк Пеннингтон в комментариях, это связано с тем, что actual hardware clocks aren't nearly that precise. Википедия говорит, что HPET имеет частоту «не менее 10 МГц», что означает один тик на 100 наносекунд.

Если вы можете жить с выкидыванием последних трех цифр (что, вероятно, не так уж и важно), вы можете разобрать это, просто нарезая входную строку, чтобы иметь только шесть цифр после десятичной точки и разбор с %f. В противном случае, похоже, вам придется реализовать вычитание самостоятельно.

+0

Спасибо. Это то, что я подозревал. – user1332148

+9

Системные часы - это не единственный источник времени, который можно использовать для datetime и timedelta. Это раздражает (граничит с миопическим идиотизмом), что они не реализованы с использованием nsecs вместо usec. – travc

+3

@travc: существует проблема с CPython: [модуль datetime не поддерживает наносекунды] (https://bugs.python.org/issue15443) – jfs

Смежные вопросы