2016-01-18 2 views
0

Так что я пытался получить, если заявление, чтобы работать, если это определенное время, и пытаюсь это:Использования если заявление с участием времени в питоне

import datetime 
try: 
    while True: 
     if(datetime.datetime.now().time() == (6, 20, 0, 0)): 
      print("It's 6:20!") 
except : 
    pass 

Но ничего не происходит в 6:20 .. почему и как это исправить?

ответ

0

Функция, которую вы вызываете, не возвращает кортеж; он возвращает экземпляр datetime.time. Кроме того, вероятность того, что вы назовете функцию на точно 6:20 исчезающе мала.

success = False 
while True: 
    now = datetime.datetime.now().time() 
    if now.hour == 6 and now.minute == 20: 
     success = True 
     print("It's 6:20!") 

Более чем вероятно, вы просто хотите, чтобы выйти из цикла один раз success становится истинным, то есть ваш код будет выглядеть как

while True: 
    now = ... 
    if now.hour == 6 ...: 
     print("It's 6:20!") 
     break 
+0

Если бы я добавить «и 1> = Теперь. second> = 0 ", это сработает? –

+0

'и t.second == 0' было бы достаточно. Отдельное поле 't.microsecod' хранит дробную секунду как целое число микросекунд. – chepner

+0

Итак, чтобы справиться с небольшой вероятностью запустить ровно в 6:20, что мне делать? Я хочу, чтобы он просто запускал код под символом if когда-то, но когда я тестирую его, он либо полностью пропустит его, либо спам со мной «It's 6:20!». –