0

終了時間が開始時間よりも短い時間帯に現在の時間が含まれているかどうかを確認する方法はありますか?

私が見たすべての例と回答は、開始時間が終了時間よりも短い場合です。例えば

import datetime

start_time = datetime.time(1)
end_time = datetime.time(12)

for i in range(0,24):
    now = datetime.time(i)
    if start_time <= now <= end_time:
        print "%s in range" % now
    else:
        print "%s not in range" % now

nowが範囲内にあるかどうかにかかわらず、正しく返されます。

ただし、このアプローチは、終了時刻が開始時刻よりも大きい場合には機能しません。

start_time = datetime.time(22)
end_time = datetime.time(12)

not in rangeこれは常に返されます。

可能であれば、次のようなことは避けたいと思います。

if start_time < end_time:
    # do start <= now <= end comparison 
else:
    # check if now is past midnight or before midnight
    # then check against start or end time
4

1 に答える 1

0

時間が真夜中に折り返されるという考えを無視したい場合は、これを 1 行で簡単に修正できます。

開始時刻と終了時刻を取得したら、それらを並べ替えてsorted()、新しい並べ替えられたリストを返し、それらを土曜日と終了時刻に再割り当てできます。

したがって、この行を入れれば問題ありません。

start_time,end_time=sorted([start_time,end_time])

確認するコードパッドの完全な作業スクリプトを次に示します。

于 2014-05-15T02:05:50.467 に答える