技術系TIPS
PR

Pythonでエポックミリ秒を取得する

saratogax
記事内に商品プロモーションを含む場合があります

エポック秒であれば、どの言語でも比較的簡単に取得できる口が用意されていますが、これをミリ秒で取得しようと思うと少し調整が必要です。

今回は、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)
ABOUT ME
saratoga
saratoga
フリーランスエンジニア
仕事にも趣味にも IT を駆使するフリーランスエンジニア。技術的な TIPS や日々の生活の中で深堀りしてみたくなったことを備忘録として残していきます。
記事URLをコピーしました