python3 でyyyymmddhhmmss形式をdatetime形式に変換する

python で byte 型のyyyymmddhhmmss形式をdatetime形式に変換します

native なdatetime形式

datetime パッケージを用いてdatetime型にします。

>>> from datetime import datetime
>>> _time=b"20161229122800Z"
>>> td = datetime.strptime( _time.decode('utf-8'), '%Y%m%d%H%M%SZ')
>>> td
datetime.datetime(2016, 12, 29, 12, 28)

これだとnative (UTCオンリー) となり、マルチリージョン対応が困難。

aware なdatetime形式

以下のようにして、aware な形式(オブジェクトの中にタイムゾーンの情報を思っている形式) にするにはpytz を用いる。

pytz は標準パッケージではないものの、準公式パッケージ相当の信頼性があるもよう。

// pytz のインストール
% pip install pytz

awareなdateime形式を得る。

>>> from datetime import datetime
>>> import pytz
>>> _time=b"20161229122800Z"
>>> td = datetime.strptime( _time.decode('utf-8'), '%Y%m%d%H%M%SZ').replace(tzinfo=pytz.utc)
>>> td
datetime.datetime(2016, 12, 29, 12, 28, tzinfo=<UTC>)

参考

Pythonの日付処理とTimeZone | Nekoya Press