2012-05-16 83 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