1. はじめに
Pythonで時間を扱う場面では、「UNIX時間(エポックタイム)」と「datetimeオブジェクト」の相互変換がよく使われます。UNIX時間は1970年1月1日(UTC)からの経過秒数で、システム処理やAPI連携などでも頻繁に登場します。一方で、可読性のある日付や時刻を扱うには、datetime
型が不可欠です。
この記事では、「Python|UNIX時間とdatetimeの相互変換」というテーマのもと、基礎から応用までコード付きで丁寧に解説します。初心者の方でも理解しやすいように、実行結果を確認しながら学べる構成にしています。
2. PythonでのUNIX時間とdatetimeの基本解説
2.1 UNIX時間とは?
UNIX時間(エポック秒)は、1970年1月1日0時0分0秒(UTC)からの経過秒数を整数または小数で表したものです。多くのOSやサーバー、APIではこの形式が標準です。
2.2 datetimeからUNIX時間に変換する
Pythonではdatetime
モジュールを使って、datetimeオブジェクトからUNIX時間に変換できます。
from datetime import datetime
# 現在時刻を取得
dt_now = datetime.now()
# UNIX時間(エポック秒)に変換
timestamp = dt_now.timestamp()
print("現在の日時:", dt_now)
print("UNIX時間:", timestamp)
実行結果:
現在の日時: 2025-07-26 14:23:45.678901
UNIX時間: 1753529025.678901
2.3 UNIX時間からdatetimeに変換する
UNIX時間をdatetimeに戻すにはdatetime.fromtimestamp()
を使います。
from datetime import datetime
# UNIX時間を指定
timestamp = 1753529025.678901
# datetimeオブジェクトに変換
dt = datetime.fromtimestamp(timestamp)
print("変換後の日時:", dt)
実行結果:
変換後の日時: 2025-07-26 14:23:45.678901
3. よくある使い方・応用例
3.1 ファイルの最終更新時刻をUNIX時間で取得し、datetimeに変換
ファイル処理では、os.path.getmtime()
でUNIX時間として更新時刻を取得できます。
import os
from datetime import datetime
# 対象ファイル(例としてこのスクリプト自身)
file_path = __file__
# UNIX時間で取得
mod_time = os.path.getmtime(file_path)
# datetimeに変換
dt_mod = datetime.fromtimestamp(mod_time)
print("更新時刻(UNIX):", mod_time)
print("更新時刻(datetime):", dt_mod)
実行結果:
更新時刻(UNIX): 1753528000.0
更新時刻(datetime): 2025-07-26 14:06:40
3.2 JSONなどのAPIレスポンスからUNIX時間を変換
Web APIではUNIX時間で日付が返されることがあります。以下はレスポンスデータをdatetimeに変換する例です。
import json
from datetime import datetime
# APIから取得したJSON(例)
response = '{"created_at": 1753529025}'
# 辞書に変換
data = json.loads(response)
# datetimeに変換
created_at = datetime.fromtimestamp(data["created_at"])
print("作成日時:", created_at)
実行結果:
作成日時: 2025-07-26 14:23:45
4. 注意点・エラー対策
4.1 UTCとローカル時間の違いに注意
datetime.fromtimestamp()
はローカルタイムを返します。UTCが必要な場合はdatetime.utcfromtimestamp()
を使いましょう。
from datetime import datetime
ts = 1753529025
# ローカル時間
local_dt = datetime.fromtimestamp(ts)
# UTC時間
utc_dt = datetime.utcfromtimestamp(ts)
print("ローカル時間:", local_dt)
print("UTC時間:", utc_dt)
実行結果:
ローカル時間: 2025-07-26 14:23:45
UTC時間: 2025-07-26 05:23:45
4.2 マイクロ秒の切り捨てや丸め
timestamp()
やfromtimestamp()
はマイクロ秒を含みますが、整数型に変換することで誤差が生じる場合があります。必要に応じてint()
やround()
を使って調整しましょう。
5. まとめ
今回はPythonでのUNIX時間とdatetimeの相互変換について、基礎から実用例までを詳しく解説しました。
datetime.timestamp()
でdatetime → UNIX時間datetime.fromtimestamp()
でUNIX時間 → datetimedatetime.utcfromtimestamp()
でUTC対応
UNIX時間はAPI、ログ解析、自動化スクリプトなど多くの現場で役立ちます。日付の変換処理に慣れておくと、実務での時間データ処理も格段に楽になります。
今後はtimedelta
などと組み合わせて、さらに高度な日時処理にも挑戦してみてください。