Google App Engineで協定世界時(UTC)から日本標準時(JST)への変換
2008/11/05 10:33:29
データストアで型「DateTimeProperty」にして自動で入るようにしておくと、協定世界時(UTC)が入って日本時間からしたら9時間のずれが生じるのでそれのとりあえずの解決方法。以下詳細。
「auto_now=True」や「auto_now_add=True」にしておくと、追加時や更新時に勝手に日時が入るので便利ですが、UTCが入るので日本で日本人が使うWebアプリとしては不都合ですね。
さくっと調べてみましたが、自動で入る値を日本時間に直す方法は見つからなかったので、表示する時に9時間足す関数を作ってひとまず対応。
「create_date」は「db.DateTimeProperty」で出力は
な感じになります。
表示方法を変えたければ
とすると
な感じで思い通りにできます。
ここでの「%Y」や「%m」や「%d」は「strftime」の指示語が決まっていますので、
Pythonのリファレンス「14.2 time -- 時刻データへのアクセスと変換」を参照のこと。
さくっと調べてみましたが、自動で入る値を日本時間に直す方法は見つからなかったので、表示する時に9時間足す関数を作ってひとまず対応。
import datetime
def UTC2JST(str):
"""協定世界時(UTC)から日本標準時(JST)への変換"""
str = str + datetime.timedelta(hours=9)
return str
news = Ds_News.get(news_key)
print news. create_date
print UTC2JST(news.create_date)「create_date」は「db.DateTimeProperty」で出力は
2008-10-22 01:49:06.73400 2008-10-22 10:49:06.73400
な感じになります。
表示方法を変えたければ
print UTC2JST(news.create_date).strftime("%Y年%m月%d日 %H時%M分%S秒")とすると
2008年10月22日 10時49分06秒
な感じで思い通りにできます。
ここでの「%Y」や「%m」や「%d」は「strftime」の指示語が決まっていますので、
Pythonのリファレンス「14.2 time -- 時刻データへのアクセスと変換」を参照のこと。