3

Python で 2 回比較しようとしていますが、last_update が time_now よりも 1 時間以上進んでいる場合は、関数を実行します

これまで私が持っている

last_update = '01:00:00'
time_now = strftime("%H:%M:%S", gmtime())

time_now= str(time_now)


FMT = '%H:%M:%S'
tdiff = datetime.strptime(time_now, FMT) - datetime.strptime(time_update, FMT)

時間差を正しく出力します。ただし、次のような論理ステートメントでそれを使用する方法がわかりません

if tdiff > 01:00:00 
   ..do stuff..

何か案は..?

4

2 に答える 2

4

時刻のみ (日付なし) を解析する場合は、結果のオブジェクトを今日の日付と再結合する必要があります。

from datetime import datetime, date, timedelta

dt_update = datetime.combine(date.today(), datetime.strptime(last_update, '%H:%M:%S').time())

そうしないと1900-01-01オブジェクトに日付が付いてしまいますが、組み替えると現在時刻との比較がしやすくなります。datetime.now()それを次のものと比較するために使用するだけです:

tdiff = datetime.now() - dt_update

これでtimedelta()オブジェクトができました。それを別のものと比較してくださいtimedelta

if tdiff > timedelta(hours=1):
于 2013-05-01T20:08:34.587 に答える
1

行ってから戻るのではなく、数値で比較する必要がありますstrftime。Datetime オブジェクトはすでにネイティブに相互に比較できるため、それらを使用するだけです。

import datetime
    import time

next_update = None
one_hour = datetime.timedelta(hours=1)

def f():
    # Do whatever
    next_update = datetime.datetime.now() + one_hour

while True:
    if datetime.datetime.now() > next_update:
        f()
    time.sleep(3600) # Now sleep for an hour (or whatever).

テキスト ファイルなどから last_updated パラメーターを取得している場合は、 を使用strptimedatetimeて、既に行っているように変更してから、比較を行います。

于 2013-05-01T20:08:57.797 に答える