0

指定された時間が少なくとも10分先かどうかをPythonに確認させようとしています。データを入力すると、常に「else」句が返されます。The scheduled time must be at least 10 minutes from now
これまでに使用したコードは次のとおりです。

while len(schedTime) == 0:
        schedTime = raw_input('Scheduled Time (hh:mm): ')

        schedHr = schedTime.split(':')[0]
        schedMi = schedTime.split(':')[1]

        try:
            testTime = int(schedHr)
            testTime = int(schedMi)
        except:
            print 'The scheduled time must be in the format hh:mm)'
            schedTime = ''
            continue

        if int(self.hr) <= int(schedHr) and int(self.mi) + 10 <= int(schedMi):
            pass
        else:
            print 'The scheduled time must be at least 10 minutes from now'
            schedTime = ''

スクリプトの 2 番目の部分を少し (かなり) 下に移動します。

 ### Get the current time
    now  = datetime.datetime.now()
    yrF = now.strftime('%Y')
    moF = now.strftime('%m')
    dyF = now.strftime('%d')

    then = now + datetime.timedelta(minutes=10)
    self.hr = then.strftime('%H')
    self.mi = then.strftime('%M')
4

3 に答える 3

3

日時ライブラリの使用を検討してください:http://docs.python.org/library/datetime.html。2つのtimedeltaオブジェクトを作成できます。1つは現在の瞬間用で、もう1つはスケジュールされた時間用です。減算を使用すると、予定時刻が今から10分未満離れているかどうかを確認できます。

例えば

t1 = datetime.timedelta(hours=self.hr, minutes=self.mi)
t2 = datetime.timedelta(hours=schedHr, minutes=schedMi)
t3 = t2 - t1
if t3.seconds < 600:
    print 'The scheduled time must be at least 10 minutes from now'
    schedTime = ''
于 2012-09-11T15:02:40.050 に答える
0

このスクリプトにはいくつかの問題がありますが、最も明白なのは、時間のロールオーバーを考慮していないことです。たとえば、時間が午後5時で、誰かが午後6時を入力した場合、次の句を使用します。

int(self.hr) <= int(schedHr) and int(self.mi) + 10 <= int(schedMi)

self.miが00で、schedMiが00であるため、falseになります。

于 2012-09-11T14:54:28.363 に答える
0

timedelta オブジェクトを使用する必要があります。例えば:

tdelta = datetime.timedelta(minutes=10)
#read in user_time from command line
current_time = datetime.datetime.now()
if user_time < current_time + tdelta:
    print "Something is wrong here buddy" 
于 2012-09-11T15:16:47.370 に答える