datetimeをUTCとして格納するデータベースがあります。私は特定の時間から情報を調べる必要がありますが、現地時間で日付と時刻が与えられます、 'Europe/Copenhagen'としましょう。私はこれらを次のように指定しています:Python pytz:現地時間をutcに変換します。ローカライズが変換されないようです
year = 2012; month = 12; day = 2; hour = 13; min = 1;
私はこれらをデータベースで検索できるように変換する必要があります。私はpytz
を使ってこれをしたいと思います。
local_tz = timezone('Europe/Copenhagen')
t = local_tz.localize(datetime.datetime(year, month, day, hour, min))
しかし、私はlocalize()
について困惑している:私はlocalize
で探しています。これは、その年などが現地時間に私に与えられていると仮定していますか?あるいは、彼らはUTCで与えられていると仮定していますが、今は現地時間に変換していますか?
print t
は私を与える:
2012-12-02 13:01:00+01:00
だから、それが本来の年ということを想定しているようです、などUTCでした。時間は13時でなく13時です。代わりに何をすべきですか?私はpytzのドキュメントを読んだが、これは私には分かりません。物事は難しいので、ピッツが実際にこれらの問題を解決しているかどうかはわかりません。そして、私は、例が私に働くものやうまくいかないものを示しているかどうかを常に知るわけではありません。
print local_tz.normalize(t)
私のプリントTと同じ結果が得られます。
私は正規化を試してみました。編集:上記の数字などは、2012-12-2 12:01のデータベースの情報と一致する必要があります。
時間は14:01:00 + 01:00となります。正しいローカル時刻は13、utc時刻は12です。 – user984003
@ user984003:ああ、申し訳ありませんが、最初の文章を誤読しました。 '.astimezone()'はまだまだやり方です。 –
はい、その2番目の方法は、ありがとうございます。あなたはあなたの答えにそれを持っていてもらえますか、そうでなければ少し混乱していると思います;)私は印刷された日付について混乱していたことがわかります。 "+01:00"は、それがutcよりも1時間先であることを示しています。時間に1時間を追加する必要はありません。 – user984003