42

HH:MM::SS.nano_seconds (例: 01:02:03.123456789) の形式の時間のログ ファイルがいくつかあります。Python で datetime を作成したいので、時間の計算をきちんと行うことができます (例: 時間差を取る)。strptime は、%f を使用してマイクロ秒単位でうまく機能します。Python の datetime および time モジュールは本当にナノ秒をサポートしていないのでしょうか?

4

5 に答える 5

30

ソースから、オブジェクトdatetimeはマイクロ秒よりも細かいものをサポートしていないことがわかります。コメントで Mike Pennington が指摘したように、これはコンピューターのハードウェア クロックがそれほど正確ではないことが原因である可能性があります。ウィキペディアによると、HPETの周波数は「少なくとも 10 MHz」です。これは、100 ナノ秒あたり 1 ティックを意味します。

最後の 3 桁を捨てても構わない場合 (おそらくあまり意味がないでしょう)、入力文字列をスライスして小数点以下 6 桁だけにし、 で解析するだけでこれを解析できます%f。それ以外の場合は、減算を自分で実装する必要があるようです。


かなり後の更新: numpy と pandas はそれぞれ、ナノ秒を追跡する可能性を含むタイムスタンプを (多少異なる) サポートしています。これは多くの場合、優れたソリューションです。方法については、他の回答を参照してください。

Python 3.7+ には( PEP 564time.time_ns ) にも関連する関数がありますが、 ではまだナノ秒をサポートしていません。timedatetime

于 2012-05-16T04:46:10.583 に答える