2012-05-16 51 views
13

我有一些格式为HH:MM :: SS.nano_seconds(例如01:02:03.123456789)的日志文件。我想创建一个python的日期时间,所以我可以整齐地做数学的时间(例如,需要时间差异)。 strptime适用于微秒使用%f。 Python日期时间和时间模块是否真的不支持纳秒?解析包含纳秒的日期时间字符串

+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对象不支持任何比微秒更好的东西。正如Mike Pennington在评论中指出的那样,这是因为actual hardware clocks aren't nearly that precise。维基百科说,HPET的频率“至少为10 MHz”,这意味着每100纳秒一个tick。

如果您可以忍受抛出最后三位数字(反正这可能不是太有意义),您可以通过将输入字符串切分为小数点后只有六位数字并使用%f解析来解析此问题。否则,它看起来像你必须自己实施减法。

+0

谢谢。这就是我所怀疑的。 – user1332148

+9

系统时钟不是可能想要使用datetime和timedelta的唯一时间源。 这是讨厌的(接近近视白痴),他们没有实施使用nsecs而不是usecs。 – travc

+3

@travc:有一个开放的CPython问题:[日期时间模块不支持纳秒](https://bugs.python.org/issue15443) – jfs