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

感想

小さいライブラリですが、使い方がわかりやすくていいですね!