Pythonでタイムゾーン

EC2上で動くDjangoアプリケーションでタイムゾーンをAsia/Tokyoに設定してるのにうまく日本時間に変換して表示してくれませんでした。どう見てもUTCです。それを日本時間に直した時の備忘録
まず、pytzというモジュールをインストールする。

$ easy_install pytz

DateTime型のオブジェクトのタイムゾーンがUTCになっているようだったので、それを日本のタイムゾーンに変換します。

import pytz
fmt = '%Y-%m-%d %H:%M:%S'
# dtが問題のdatetime型オブジェクト
print dt.strftime(fmt) # 2010-06-13 13:55:12
utc = pytz.utc
utc_dt = utc.localize(dt)
jpn_dt = utc_dt.astimezone(pytz.timezone('Asia/Tokyo'))
print jpn_dt.strftime(fmt) # 2010-06-13 21:55:12

もし、Asia/Tokyoの時刻をAmerica/Los_Angelesに変換したかったら

import pytz
jpn = pytz.timezone('Asia/Tokyo')
jpn_dt = jpn.localize(dt)
los_dt = jpn_dt.astimezone(pytz.timezone('America/Los_Angeles'))

とすればOK
ちなみに、タイムゾーンに指定できる文字列はこことかが分かりやすい