web-dev-qa-db-ja.com

ミリ秒単位でPythonタイムスタンプを作成するにはどうすればよいですか?

エポック以降のミリ秒(ms)のタイムスタンプが1つ必要です。これは難しくないはずです。datetimeまたは同様のメソッドがいくつか欠落していると確信しています。

実際には、マイクロ秒(µs)の粒度も問題ありません。サブ1/10秒のタイミングが必要です。

例。 750ミリ秒ごとに発生するイベントがあります。ライトがオンかオフかを確認するためにチェックします。各チェックと結果を記録し、後で確認する必要があるため、ログは次のようになります。

...00250 Light is on
...01000 Light is off
...01750 Light is on
...02500 Light is on

2番目の完全な粒度しか持たない場合、ログは次のようになります。

...00 Light is on
...01 Light is off
...01 Light is on
...02 Light is on

十分に正確ではありません。

25
Skip Huffman
import time
time.time() * 1000

1000はミリ秒/秒です。エポックから100分の1秒が必要な場合は、100を掛けます。

37
nmichaels

Pythonでは、datetime.now()time.time()よりも精度の高い値を生成する場合があります。

_from datetime import datetime, timezone, timedelta

now = datetime.now(timezone.utc)
Epoch = datetime(1970, 1, 1, tzinfo=timezone.utc) # use POSIX Epoch
posix_timestamp_micros = (now - Epoch) // timedelta(microseconds=1)
posix_timestamp_millis = posix_timestamp_micros // 1000 # or `/ 1e3` for float
_

理論的には、time.gmtime(0)time.time()で使用されるエポック)は_1970_と異なる場合があります。

8
jfs