11

私はPST時間です。2 つのタイムスタンプを取得したい:

  1. 昨日の始まり
  2. 昨日の終わり

これらのタイムスタンプは、現在の時刻に関係なく同じである必要があります。

Pythonでこれを行うにはどうすればよいですか?

オブジェクトを使用しdatetimeてからタイムスタンプに変換する必要がありますか?

4

2 に答える 2

1

これを行う明白な方法は、 を使用することです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 日の始まりが返されます。これは、昨日ではなく今日です。 . ここでも同じ回避策が機能します。

于 2013-07-04T00:10:23.793 に答える