Я пытаюсь найти самый чистый/самый питонический способ оценки, находится ли «сейчас» между двумя временами; Однако; время начала/окончания может или не может пересекать границу дня, например (просто используя простые примеры):
onhour=23
onmin=30
offhour=4
offmin=15
timenow = datetime.datetime.now().time()
Выполнение прямого сценария if START < NOW < END
для этого не сработает!
В настоящее время у меня есть некоторый код, который оценивает, является ли он в настоящее время «NightTime», который выглядит так:
def check_time(timenow, onhour, onmin, offhour, offmin, verbose):
now = datetime.datetime.now()
now_time = now.time()
# If we're actually scheduling at night:
if int(offhour) < int(onhour):
# Check to see if we're in daylight times (ie. off schedule)
if datetime.time(int(offhour),int(offmin)) <= now_time <= datetime.time(int(onhour),int(onmin)):
if verbose == True:
print("Day Time detected.")
return False
else:
if verbose == True:
print("Night Time detected.")
return True
else:
if datetime.time(int(onhour),int(onmin)) <= now_time <= datetime.time(int(offhour),int(offmin)):
if verbose == True:
print("Night Time detected.")
return True
else:
if verbose == True:
print("Day Time detected.")
return False
Извиняюсь, если название не звучит как что-то новое, но просмотрев несколько существующих ответов на аналогичные проблемы, такие как:
Я заметил, что они, похоже, не учитывают случаи, когда время начала и окончания происходит за пределами дня.
В добавок к этому; любые идеи, связанные с добавлением планирования на основе дня, также будут весьма полезны! т.е. "для пн-пт включение в 23:00, выключение в 04:00" - но управление включением и выключением в течение дня в обе стороны (иначе что-то будет включено в пятницу, но не будет выключено в субботу -- и тем не менее, включая субботу, это означает, что он снова включается в 23!...)
Я решил сделать простое «Включить в X, спать на Y», чтобы обойти это... но если скрипт запускается во время цикла «Вкл», он не будет инициирован до следующего запуска. .Но вроде как самый простой вариант! :)
Я надеюсь, что есть какой-то классный модуль, который делает все это... :D
Совместимость Python 2.7 - 3.2 тоже очень важна для меня!
date1 <= date2 <= date3
работает нормально. - person Simeon Visser   schedule 11.12.2013offhour
следует назначить сегодня или завтра... Я думаю, что оценки, еслиtime.now()
больше, чемoffhour
или подобное, вероятно, будет достаточно... - person dalgibbard   schedule 11.12.2013