STEAM PLACE

エンジニアリングとマネジメント

Python2.7 で タイムゾーン付き日時を Unixtime に変換する

やりたかっこと

ISO 8601 YYYYMMDDThhmmss.SSS+900 を Unixtime に変換しようとしていた。
python2.7 で strptime では %z がサポートされていないので、タイムゾーンを使った日付変換が面倒くさい。%z を使うと下記のように怒られる。
ValueError: 'z' is a bad directive in format '%Y%m%dT%H%M%S.%f%z'

strftime() と strptime() を使ってtzinfo付きdatetime <-> stringの変換をやってみた を参考に途中までやっていたのだが、 JST から JST の変換はゾーン指定子を気にする必要がなかったことに気づいた。
※UTCからJSTへの変換などは上記の記事のようなことが必要だろう。

 タイムゾーン指定子を削除してしまえばいい

タイムゾーン
使えないなら
消してしまえ

 
>>> from datetime import datetime
>>> import time
>>> int(time.mktime(datetime.strptime('20160323T204100.001+0900'.replace('+0900', ''), '%Y%m%dT%H%M%S.%f').timetuple()))                                       
1458733260

ちょっと強引だけどシンプルになった。