25

datetime モジュールについて理解しようとしています。エポックとしての現在の時刻と、イベントが最後に発生した時刻 (エポック時間として) を知っています。私がする必要があるのは、そのイベントが昨日の午前 0 時から午前 0 時の間に発生したかどうかを調べることです。

t = time.time() # is now
t2 = 1234567890 # some arbitrary time from my log

24 時間前は t - 86400 ですが、それを真夜中に切り上げるにはどうすればよいですか。datetime のタイムスタンプを取得したり、datetime を操作して時刻を設定したりする方法を見つけるのに本当に苦労しています。

4

7 に答える 7

2

このようなタイムスタンプを指定すると、エポックからの日数(気にしない) と残りの秒数 (気にする)divmodを計算するために使用できます。

days_since, remaining_seconds = divmod(t, 24*3600)  # Divide by number of seconds in one day

次に、元のタイムスタンプから残りの秒数を引くと、当日の午前 0 時になります。

t -= remaining_seconds

切り上げは、切り捨ての前にターゲットのタイムスタンプを正確に 1 日前にシフトするのと同じくらい簡単です。

tomorrow_t = t + 24 * 3600
days_since, remaining_seconds = divmod(tomorrow_t, 24*3600)
t = tomorrow_t - remaining_seconds
于 2013-10-25T16:36:55.390 に答える
2

特定のタイムゾーンの午前 0 時のタイムスタンプを取得するには:

from datetime import datetime
import pytz

TZ = "Asia/Shanghai"
datetime.now(pytz.timezone(TZ)).replace(hour=0, minute=0, second=0, microsecond=0).timestamp()
于 2020-09-24T06:14:22.457 に答える