プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2020/02/29

[Python] ISO 8601 形式の文字列を datetime に変換する

update2021/08/13 event_note2020/02/29 14:10

日時を表す形式はいろいろありますが、ここでは ISO 8601 形式の文字列を datetime オブジェクトに変換する方法について記載します。

環境

  • python 3.6

python 3.7 以降では fromisoformat() が使えるみたいですが、今回は諸事情により python 3.6 を対象としています。

datetime オブジェクトへの変換

単純に変換するだけのサンプルコードです。

from datetime import datetime 

timestamp = "2018-03-30T12:34:56.789Z"
dt = datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S.%f%z')
print(dt)

出力結果

2018-03-30 12:34:56.789000+00:00

datetime オブジェクト同士で差分を計算する場合

from datetime import datetime 
import pytz

timestamp = "2018-03-30T12:34:56.789Z"
dt = datetime.strptime(timestamp, '%Y-%m-%dT%H:%M:%S.%f%z')
utc_now = datetime.now(pytz.timezone('UTC'))
tdelta = utc_now - dt
print(tdelta.total_seconds())

出力結果

60572020.293181