Pythonでタイムゾーンを簡単に扱えるライブラリtimesを試す
Pythonでタイムゾーンを簡単に扱えるライブラリとしてtimesというのがあるのを知ったので試してみました
インストール
pip install times
ローカルタイムをUTCに変換する
datetimeオブジェクトをUTCに変換するにはタイムゾーンを文字列で指定してtimes.to_universalもしくはtimes.from_localを呼び出します。
datetimeオブジェクトが返されます。
import times import datetime local_time = datetime.datetime(2012, 2, 3, 16, 0, 0) # UTCに変換する universal_time = times.to_universal(local_time, 'Asia/Tokyo') print universal_time # => 2012-02-03 07:00:00 # from_localとto_universalは同じ print times.from_local(local_time, 'Asia/Tokyo') # => 2012-02-03 07:00:00
タイムゾーンが間違っているとpytz.exceptions.UnknownTimeZoneErrorが返されます
local_time = datetime.datetime(2012, 2, 3, 16, 0, 0) universal_time = times.to_universal(local_time, 'Asia/xxxx') # => pytz.exceptions.UnknownTimeZoneError
UTCをローカルタイムに変換する
UTCのdatetimeオブジェクトをローカルタイムに変換するにはtimes.to_localもしくはtimes.from_universalを呼び出します。
datetimeオブジェクトが返されます。
関数名がわかりやすくていいです
# 逆にUTCを日本標準時(JST)に変換する # datetimeオブジェクトを得る print times.to_local(universal_time, 'Asia/Tokyo') # => 2012-02-03 16:00:00+09:00 # to_localとfrom_universalは同じ print times.from_universal(universal_time, 'Asia/Tokyo') # => 2012-02-03 16:00:00+09:00
タイムゾーンを指定してフォーマットする
タイムゾーンを指定して、times.formatを呼び出すと文字列に変換できます。フォーマットを指定できます。
# タイムゾーンを指定してフォーマットする print times.format(universal_time, 'Asia/Tokyo') # => 2012-02-03 16:00:00+0900 # フォーマットを指定する print times.format(universal_time, 'Asia/Tokyo', '%Y年%m月%d日 %H時%M分') # => 2012年02月03日 16時00分
utcを得る
times.nowを呼び出すとutcのdatetimeオブジェクトを取得できます
内部的にはdatetime.datetime.utcnowです
print times.now() # => 2012-02-03 07:36:35.043260
感想
小さいライブラリですが、使い方がわかりやすくていいですね!