2つの部分があります。
- UNIXタイムスタンプ(「エポックからの秒数」)を現地時間に変換します
- 希望する形式で現地時間を表示します。
ローカルタイムゾーンの過去のutcオフセットが異なり、Pythonがtzデータベースにアクセスできない場合でも、ローカルタイムを取得するポータブルな方法は、pytz
タイムゾーンを使用することです。
#!/usr/bin/env python
from datetime import datetime
import tzlocal # $ pip install tzlocal
unix_timestamp = float("1284101485")
local_timezone = tzlocal.get_localzone() # get pytz timezone
local_time = datetime.fromtimestamp(unix_timestamp, local_timezone)
これを表示するには、システムでサポートされている任意の時刻形式を使用できます。例:
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
print(local_time.strftime("%B %d %Y")) # print date in your format
現地時間を必要としない場合は、代わりに読み取り可能なUTC時間を取得するには:
utc_time = datetime.utcfromtimestamp(unix_timestamp)
print(utc_time.strftime("%Y-%m-%d %H:%M:%S.%f+00:00 (UTC)"))
返される日付に影響を与える可能性のあるタイムゾーンの問題を気にしない場合、またはpythonがシステムのtzデータベースにアクセスできる場合:
local_time = datetime.fromtimestamp(unix_timestamp)
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f"))
Python 3では、stdlibのみを使用してタイムゾーン対応の日時を取得できます(Windowsのように、システム上のtzデータベースにPythonがアクセスできない場合、UTCオフセットは間違っている可能性があります)。
#!/usr/bin/env python3
from datetime import datetime, timezone
utc_time = datetime.fromtimestamp(unix_timestamp, timezone.utc)
local_time = utc_time.astimezone()
print(local_time.strftime("%Y-%m-%d %H:%M:%S.%f%z (%Z)"))
time
モジュールの関数は、対応するC APIの薄いラッパーであるため、対応するdatetime
メソッドよりも移植性が低い場合があります。
#!/usr/bin/env python
import time
unix_timestamp = int("1284101485")
utc_time = time.gmtime(unix_timestamp)
local_time = time.localtime(unix_timestamp)
print(time.strftime("%Y-%m-%d %H:%M:%S", local_time))
print(time.strftime("%Y-%m-%d %H:%M:%S+00:00 (UTC)", utc_time))