2012-05-16 13 views
13

Ich habe einige Log-Dateien mit Zeiten im Format HH: MM :: SS.nano_seconds (z. B. 01: 02: 03.123456789). Ich möchte eine Datetime in Python erstellen, damit ich die Zeit genau berechnen kann (z. B. Zeitunterschiede). strptime funktioniert gut für Mikrosekunden mit% f. Werden die Python-datetime- und time-Module wirklich keine Nanosekunden unterstützen?Analysieren von Datetime-Strings mit Nanosekunden

+0

mögliches Duplikat von [POSIX/Unix-Zeit in Sekunden und Nanosekunden in Python holen?] (Http://stackoverflow.com/questions/2394485/get-posix-unix-time-in-seconds-and-nanoseconds-in- -python) –

+0

@MikePennington Diese Frage beschäftigt sich damit, eine Uhrzeit mit Nanosekunden zu bekommen, sie nicht zu analysieren und sie unabhängig von einer tatsächlichen Uhr mathematisch zu behandeln. – Dougal

+0

@Dougal, die Frage ist sehr relevant, da sie darauf hinweisen, dass Nanosekunden-Zeit-Präzision Plattform-Unterstützung erfordert, und die meisten nicht. In dieser Frage wird auch die String-Formatierung von Nanosekunden diskutiert. –

Antwort

13

Sie können from the source sehen, dass datetime-Objekte nichts Besseres als Mikrosekunden unterstützen. Wie Mike Pennington in den Kommentaren darauf hingewiesen hat, liegt dies daran, dass actual hardware clocks aren't nearly that precise. Wikipedia sagt, dass HPET Frequenz "mindestens 10 MHz" hat, was einen Tick pro 100 Nanosekunden bedeutet.

Wenn Sie mit dem Auswerfen der letzten drei Ziffern leben können (die wahrscheinlich sowieso nicht besonders aussagekräftig sind), könnten Sie dies analysieren, indem Sie die Eingabezeichenfolge nur auf sechs Ziffern hinter dem Dezimaltrennzeichen zerlegen und mit %f analysieren. Ansonsten sieht es so aus, als müssten Sie die Subtraktion selbst implementieren.

+0

Danke. Das habe ich vermutet. – user1332148

+9

Die Systemuhr ist nicht die einzige Zeitquelle, mit der Sie Datetime und TimeDelta verwenden möchten. Es ist ärgerlich (grenzt an myopische Idiotie), dass sie nicht mit nsecs anstelle von usecs implementiert werden. – travc

+3

@travc: Es gibt ein offenes CPython-Problem: [datetime Modul hat keine Unterstützung für Nanosekunden] (https://bugs.python.org/issue15443) – jfs