2

そのため、開始時刻として午前7:00、終了時刻として午後10:00などの入力を取得し、一連の時刻を比較します(これも、午前8:00、3の形式で)。 00 PMなど)、それらの時間が時間の範囲内にあるかどうかを確認します。時間の範囲がある「日」を作成する良い方法はありますか(終了時間は午前4時まで遅くなる可能性があるため、深夜ではなく午前6時から午前5時59分まで行くと考えていました。 -午後11時59分、可能であれば)時間を確認できますか?

例:starttime = 8:00 AM, endtime = 3:00 AM、およびチェックtime = 7:00 AMすると、時間が範囲外として返されます。

ありがとう!

4

4 に答える 4

2

私はおそらく日時ライブラリを使用するでしょう。入力文字列で使用すると、オブジェクトを直接strptime()比較できます。datetime

于 2012-04-11T18:47:38.990 に答える
2

datetime解析および比較機能を使用します。

from datetime import datetime, timedelta

def parse_time(s):
    ''' Parse 12-hours format '''
    return datetime.strptime(s, '%I:%M %p')

starttime = parse_time('8:00 AM')
endtime   = parse_time('3:00 AM')
if endtime < starttime:
   # add 1 day to the end so that it's after start
   endtime += timedelta(days=1)

checked_time = parse_time('7:00 AM')

# Can compare:
print starttime <= checked_time < endtime
于 2012-04-11T18:51:58.077 に答える
1

すべての時間を24時間形式に変換し、分と秒を時間の端数として取り、それらを数値として比較して、時間が間隔内にあるかどうかを確認します。

于 2012-04-11T18:42:37.737 に答える
1

Pythonのdatetime。*クラスはすでに比較をサポートしています。

>>> import datetime
>>> datetime.datetime(2012,10,2,10) > datetime.datetime(2012,10,2,11)
False
>>> datetime.datetime(2012,10,2,10) > datetime.datetime(2012,10,2,9)
True

したがって、あなたがしなければならないのは、startTimeとendTimeの2つのメンバーを持つクラスTimeRangeを宣言することだけです。その場合、「内部」関数は次のように単純にすることができます。

def inside(self, time):
    return self.startTime <= time and time <= self.endTime
于 2012-04-11T18:47:46.620 に答える