私はすべての時間をUTCに保存しています。私のシステムはUTCに設定されています(私はESTにいますが)。現在の日の開始時刻と終了時刻を指定します(UTC→EST→UTC)。 Python
Wed, 20 Feb 2013 03:51:39 +0000
しかし、私はESTのために今日オフに基づいて情報を選択したいと思いますので、私がしようとしています:私はとして保存された日付が持っている
はUTCとして現在の時刻を取得し、 ESTに変更する
datetime.utcnow().replace(tzinfo=tz.tzutc()).astimezone(tz.gettz('America/New_York')) 2013-02-19 23:17:20.560898-05:00
次は、2013年の開始日(2013年) -02-19 00:00:00.000000-05:00)と終了時刻(2013-02-19 23:59:59.99999-05:00)
これらの値を取得したら、 UTCに戻って変換するので、私はそれが私のEST(私のタイムゾーン)が正しいことで締め付けることができる高い値と低い値を持っています。
これは、これを行うための最善の方法ではない、または私は何かが欠けていた場合は(私には非常に複雑に見えるん)私は光を見る助けてください!
TIA
答えあたりのアップデート:
d1 = datetime.utcnow().replace(tzinfo=tz.tzutc()).astimezone(tz.gettz('America/New_York'))
print d1.strftime("%m %d %Y") ; d2 = d1.replace(day=d1.day + 1) ; print d2.strftime("%m %d %Y")
私に正しい
02 20 2013
02 21 2013
を与えること。私は今それから完全なEST時間を生成し、UTCに変換する必要があります。これは私が把握することはできません。実際には、完了すればUTCのエポックタイムスタンプに変換したいので、データベース操作がかなり簡単になるからです(<、>、==など)。
あなたは今何をしようとしているのか分かりません。この場合、ESTの時間を02/20/2013 00:00 UTCにしたいと思っていました。今すぐすべてのコードは非常に複雑な方法で今日(そして明日)の日付を取得します... –
(ESTで、起動するには、UTCではありません) –
日を置き換えないでください。それは毎月末に壊れます。私の答えに応じて、timedeltaを使用してください。また、すべてを1行でやろうとしないでください。あなたは私の答えの「ほとんど」を使うべきではありません。あなたはそれのように* all *を使うべきです。上のコードは読みにくいです。 最後に、*時間*を使用していませんか?あなたは日付のみを印刷しています。あなたが時間を必要としない場合、これのほとんどは完全に無意味です。日付には、タイムゾーンはありません。 –