日時をUTCとして保存するデータベースがあります。特定の時刻の情報を検索する必要がありますが、日付と時刻は現地時間で指定されています。たとえば、「ヨーロッパ/コペンハーゲン」としましょう。私はこれらを次のように与えられます:
year = 2012; month = 12; day = 2; hour = 13; min = 1;
したがって、データベースで検索できるように、これらをUTCに変換する必要があります。を使用してこれを実行したいと思いますpytz
。私が見ているlocalize
:
local_tz = timezone('Europe/Copenhagen')
t = local_tz.localize(datetime.datetime(year, month, day, hour, min))
しかし、私はについて混乱していlocalize()
ます。これは、その年などが現地時間で私に与えられると仮定していますか?または、それらがUTCで与えられ、現在は現地時間に変換されていると想定していますか?
print t
私に与える:
2012-12-02 13:01:00+01:00
したがって、元の年などはUTCであると想定されていたようです。時間は13ではなく13+1になりました。では、代わりに何をすればよいでしょうか。私はpytzのドキュメントを読みましたが、これは私にはわかりません。物事がトリッキーだとたくさん言及されているので、pytzが実際にこれらの問題を解決しているかどうかはわかりません。そして、例が私にうまくいくことを示しているのか、うまくいかないことを示しているのか、私はいつもわかりません。
正規化してみました:
print local_tz.normalize(t)
これで、printtと同じ結果が得られます。
編集:上記の年などの数値を使用すると、2012-12-212:01のデータベース内の情報と一致するはずです。(コペンハーゲンはその日にutc + 1であるため)