2016-07-11 5 views
0

私は毎日設定された時間の間にコードを実行する必要があります。だから私は現在の時間が時間の範囲であるかどうかを調べる必要があります。Pythonでどのように指定された時間が範囲の間にあるかを見つけることができます

hralarm=False 
now = datetime.datetime.now().time() 

if datetime.time(hour=14,minute=40) > now > datetime.time(hour=14,minute=50): 
    hralarm=True 
else : 
    hralarm=False 

hralarmフラグは常にFalseを返します。 now変数は14:46:22.994000を返します。私は秒とマイクロ秒を持たないように '今'をフォーマットしなければならないのでしょうか?なぜか比較が正しく行われていないのでしょうか?..私はPythonには新しいので、どんな助けでも大歓迎です。

+4

今ので、 > 14:40(今は14:40>ではない)、<14:50(今は14:50)です。 – glglgl

+1

あなたの状態は決して満足することはできません..それは同時に14:40より早く14:50より遅くすることはできません –

+0

ああ私の愚かな間違い...それを指摘するために感謝して.....あなたのために残念時間。 – Aparna

答えて

3

あなたは比較演算子を混在させています。いいえクロック時間が今まで同時に両方それらの条件に一致することはできません

now > datetime.time(hour=14,minute=50) # only times *greater* will match 

datetime.time(hour=14,minute=40) > now # only times *smaller* will match 

14:50後:現在の時刻が前14:40である場合は、求めています。

次のテストは、しかし、午前14時40分と午後02時50分の間の時間を見つけるために働くだろう

if datetime.time(14, 40) < now < datetime.time(14, 50): 
# 14:40 must be smaller   and 14:50 must be greater 

は小さい値に<または>ポイントの終了「を指摘」ということを覚えておいてください。

比較演算子がすでにTrueまたはFalseを生み出すことに注意してください、あなたはその直接あなたの変数hralarmではなく、あなたのためにそれを確認するためにifを使用するように割り当てることができます。

now = datetime.datetime.now().time() 
hralarm = datetime.time(14, 40) < now < datetime.time(14, 50) 
0
hralarm=False 
now = datetime.datetime.now().time() 

if datetime.time(hour=14,minute=40) < now < datetime.time(hour=14,minute=50): 
    hralarm=True 
else : 
    hralarm=False 
+0

コードにいくつかの説明を記入してください – Patryk

-1
import time 
import datetime 

hralarm=False 
now = datetime.datetime.now().time() 

time1 = datetime.time(14, 40, 0) 
time2 = datetime.time(14, 50, 0) 

if (time1.hour >= now.hour and time1.minute < now.minute) and (now.hour <= time2.hour and now.minute < time2.minute): 
    hralarm=True 
else : 
    hralarm=False 

print(hralarm) 
+1

Pythonの比較演算子は、*連鎖*とすることができます。これはOPの処理です。 'timeobject1> now> timeobject2' *は' timeobject1> now、now> timeobject2'とまったく同じ*ですが、 'now'は一度しか評価されません。ここで 'と'を使うのは完全に冗長です。そして、あなたはまだ演算子とまったく同じ間違いをしますが、あなたのテストはどちらとも一致しません。 –

関連する問題