今回は、UNIXタイムスタンプから時刻オブジェクトに変換する方法について学習しました。ググったりしていると、あまりしっかりとした情報がなかったとので、記事でまとめることにしました。時刻オブジェクトのawareやnaive、タイムスタンプなどについては、今までの時刻関係の記事でも説明していますので、そちらも参考になれば幸いです。
1. 構築環境と流れなど
今回の構築環境は以下になります。
PC: Macbook python: 3.7.0 使用モジュール・パッケージ: datetime, pytz ※ pytzはサードパーティモジュールになるため、pipでのインストールが必要です。
構築の流れは以下になります。
- タイムゾーンを明示的に指定(指定しないとローカルタイムになる)
- タイムスタンプとタイムゾーン情報からdatetimeオブジェクト(時刻)を生成
2. コード例
以下がコード例になります。タイムゾーンの違いを表すために2パターン作っています。
import datetime, pytz
timestamp = 1544604618.630 # 実験用タイムスタンプ
local_tz = pytz.timezone('Asia/Tokyo') # 1.タイムゾーンの明示(ローカルタイム)
utc = pytz.utc # 1.タイムゾーンの明示(UTC)
print(datetime.datetime.fromtimestamp(timestamp, local_tz)) # 2.datetimeオブジェクトの生成(ローカルタイム)
print(datetime.datetime.fromtimestamp(timestamp, utc)) # 2.datetimeオブジェクトの生成(UTC)
#UTCの時刻表記の場合の別解
print(datetime.datetime.utcfromtimestamp(timestamp)) #但し,naiveな時刻オブジェクト
戻り値
2018-12-12 17:50:18.630000+09:00 2018-12-12 08:50:18.630000+00:00 2018-12-12 08:50:18.630000
タイムスタンプからdatetimeオブジェクトに変換するfromtimestamp
メソッドは、変換対象のタイムスタンプの他に、tzinfoオブジェクトを引数に設定することができます。設定しない場合は、ブラウザやPCなどの時刻情報に合わせて変換されるようですが、今回はタイムゾーンの違いを表すためにあえてタイムゾーンを明示的に指定しました。ちなみに、もちろんですがutcfromtimestamp
ではタイムゾーンの設定はできないようになっています。pytzはタイムゾーンの取り扱いに便利なサードパーティモジュールです。
3. まとめ
今回は、短いですがタイムスタンプから時刻オブジェクトに生成する方法についてまとめてみました。どなたかの参考になりましたら、幸いです。
読んで頂き、ありがとうございました。
4. 参考サイト
今回参考にしたサイトは下記になります。