Pythonでエポックミリ秒を取得する
エポック秒であれば、どの言語でも比較的簡単に取得できる口が用意されていますが、これをミリ秒で取得しようと思うと少し調整が必要です。
今回は、Python でエポックミリ秒を取得したい場面に遭遇したので紹介します。
「エポックミリ秒」から「日時」への変換ツールも作ってみましたので、興味のある方は使ってみてください。
エポック秒について
まずは、エポック秒について触れておきます。
これは別名「UNIX時間」とも呼ばれるもので、「1970年1月1日午前0時0分0秒」からの経過秒数を指します。
よって、このエポック秒をプログラム上で取得するとリアルタイムに値が変化していきます。
Python の場合は以下のコマンドで取得できます。
必要に応じてエンコード指定(# coding: utf8)してください。
# coding: utf8
import time
print(int(time.time()))
結果は以下の通り。
1550020071
PHP だとこんな感じですね。
php -r "echo time();"
エポックミリ秒について
python の日付操作については、いろいろなパッケージが用意されています。
今回は time を活用した方法と、datetime からの変換を紹介します。
time
実は Python の time.time() ではミリ秒部分が小数点以下に出力されています。
import time
print(time.time())
ミリ秒という割には、最大で 2 桁までしか表示されないですね。
どうやら 3 桁目が四捨五入されているっぽい。
1550020485.57
これを含めて整数で取り扱いたい場合は、これに 1000 を掛けてあげれば大丈夫そうです。
import time
print(int(time.time() * 1000))
1550020650241
まとめて出力してあげるとわかりやすいですね。
import time
print(time.time())
print(int(time.time()))
print(int(time.time() * 1000))
1550020650.24
1550020650
1550020650241
datetime
ちなみに、datetime からミリ秒を取得するには少しテクニックが必要です。
単純にミリ秒部分が「000」でいいのなら、time パッケージを利用して算出できます。
now = datetime.datetime.now()
print(int(time.mktime(now.timetuple()) * 1000))
ミリ秒部分も厳密に扱いたい場合は、マイクロ秒を使って小細工しましょう。ミリ秒を直接取得できるメソッドはないのだろうか。
now = datetime.datetime.now()
print(int(time.mktime(now.timetuple()) * 1000) + int(now.microsecond / 1000))
PHP の場合は、以下のコマンドで同様に結果が得られます。
ceil(microtime(true) * 1000)