1. はじめに
Pythonで「UNIX時間をミリ秒単位で取得・表示する」方法について解説します。UNIX時間(エポックタイム)は、コンピュータ上での日時処理の基本となる概念で、さまざまなシステムやAPIと連携する際に非常に重要です。
通常のUNIX時間は「秒」単位ですが、精度の高い処理やログ記録、外部システムとの整合性が求められる場面では「ミリ秒単位」の取得が求められます。本記事では、Pythonを使ってUNIX時間をミリ秒単位で取得・表示する方法を、コード付きで丁寧に解説します。
2. UNIX時間とは?Pythonで取得する基本方法
UNIX時間(エポックタイム)の基本
UNIX時間とは、1970年1月1日0時0分0秒(UTC)からの経過時間を「秒単位」で表したものです。Pythonでは、このUNIX時間を取得するのに time
モジュールや datetime
モジュールを用います。
秒単位でのUNIX時間の取得方法
まずは基本となる秒単位での取得方法を確認しましょう。
import time
# 現在のUNIX時間(秒)を取得
unix_time_sec = time.time()
print(unix_time_sec)
実行結果:
1722038459.123456
出力結果の通り、time.time()
は「float型」で返され、少数以下にミリ秒情報も含まれています。しかし、このままでは視認性や加工性に欠けるため、ミリ秒単位に変換する処理が必要です。
3. UNIX時間をミリ秒単位で取得・表示する方法
1. ミリ秒に変換する基本コード
time.time()
の値に1000を掛けることで、UNIX時間を「ミリ秒単位の整数」として扱えます。
import time
# UNIX時間をミリ秒単位で取得
unix_time_millisec = int(time.time() * 1000)
print(unix_time_millisec)
実行結果:
1722038460123
このように、整数型で「1970年1月1日からの経過ミリ秒数」が得られます。多くの外部APIやログ出力形式と整合性を持たせる場合にこの形式がよく使われます。
2. datetimeモジュールと組み合わせる方法
datetime
モジュールからUNIX時間(ミリ秒)を取得する場合、timestamp()
を利用して同様に変換できます。
from datetime import datetime
# 現在時刻からUNIX時間(ミリ秒)を取得
dt = datetime.utcnow()
unix_time_ms = int(dt.timestamp() * 1000)
print(unix_time_ms)
実行結果:
1722038478123
この方法は、タイムゾーンを意識してUTCで取得したい場合に便利です。
4. よくある使い方・応用例
ログファイルにUNIX時間(ミリ秒)で記録する
ログ記録やエラーログでのタイムスタンプにミリ秒精度が必要な場合は、以下のように記録できます。
import time
def log(message):
timestamp = int(time.time() * 1000)
print(f"[{timestamp}] {message}")
log("処理を開始しました")
time.sleep(1)
log("処理が完了しました")
実行結果:
[1722038481123] 処理を開始しました
[1722038482124] 処理が完了しました
このように、ミリ秒単位の精度で処理の経過を記録できます。パフォーマンス分析やトラブル調査に役立ちます。
外部APIでミリ秒UNIX時間を送信する
API通信で日時を送る際に「UNIX時間(ms)」を要求されるケースがあります。JSON形式に組み込んで送信する例です。
import time
import json
data = {
"timestamp": int(time.time() * 1000),
"status": "ok"
}
json_str = json.dumps(data)
print(json_str)
実行結果:
{"timestamp": 1722038490123, "status": "ok"}
このように、UNIX時間(ミリ秒)はAPIとのインターフェースでよく使われる形式です。
5. 注意点・エラー対策
浮動小数点の丸め誤差に注意
time.time()
は内部的に浮動小数点で処理されるため、極端な精度が必要な場合には誤差が生じる可能性があります。高精度が求められる場合は time.perf_counter()
や time.monotonic()
の使用も検討しましょう(ただしUNIX時間ではありません)。
タイムゾーンの影響に注意
datetime.now()
はローカルタイムを返すため、timestamp()
で得られる値がUTCとズレることがあります。ミリ秒UNIX時間を取得する際は、UTC(datetime.utcnow()
)を明示的に使うのが安全です。
6. まとめ
- Pythonでは
time.time()
やdatetime.timestamp()
を使ってUNIX時間を取得できる - UNIX時間をミリ秒単位で取得したい場合は
int(time.time() * 1000)
で対応できる - ログ記録やAPI連携など、実務での活用シーンが多い
- タイムゾーンや浮動小数点の精度には注意が必要
UNIX時間をミリ秒単位で取得する技術は、システム開発やデータ連携において非常に実用的です。Pythonの基礎力を高めつつ、実務でもすぐに活用できる技術なので、ぜひ手を動かして学んでみてください!