私はPST時間です。2 つのタイムスタンプを取得したい:
- 昨日の始まり
- 昨日の終わり
これらのタイムスタンプは、現在の時刻に関係なく同じである必要があります。
Pythonでこれを行うにはどうすればよいですか?
オブジェクトを使用しdatetime
てからタイムスタンプに変換する必要がありますか?
これを行う明白な方法は、 を使用することですdatetime
。しかし、奇妙な理由でそれを避けたいようです。time
またはcalendar
、さまざまなサードパーティ ライブラリ、またはカスタム コードを代わりに使用できます。
ここにありtime
ます:
import time
def yesterday():
now = time.time()
yday = time.localtime(now - 86400) # seconds/day
start = time.struct_time((yday.tm_year, yday.tm_mon, yday.tm_mday, 0, 0, 0, 0, 0, yday.tm_isdst))
today = time.localtime(now)
end = time.struct_time((today.tm_year, today.tm_mon, today.tm_mday, 0, 0, 0, 0, 0, today.tm_isdst))
return time.mktime(start), time.mktime(end)
うるう秒を追跡するプラットフォームでうるう秒の間にこれを実行すると、昨日ではなく今日になります。これは簡単に確認できます (基本的に、今日 == 昨日の場合は、別の日を差し引きます) が、それだけの価値はないと思います。
また、真夜中から 01:00 または 23:00 (半球によって異なります) の間にクロスオーバーが発生するタイムゾーンで DST クロスオーバー中にこれを実行すると、間違った日が取得されます。たとえば、ブラジルでは、2013 年 2 月 16 日の 23:00 ~ 00:00 の 2 番目の時間にこのコードを実行すると、24 時間前の時刻を含む 1 日の始まりが返されます。これは、昨日ではなく今日です。 . ここでも同じ回避策が機能します。