Python|UNIX時間とdatetimeの相互変換

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時間 → datetime
  • datetime.utcfromtimestamp()でUTC対応

UNIX時間はAPI、ログ解析、自動化スクリプトなど多くの現場で役立ちます。日付の変換処理に慣れておくと、実務での時間データ処理も格段に楽になります。

今後はtimedeltaなどと組み合わせて、さらに高度な日時処理にも挑戦してみてください。

タイトルとURLをコピーしました