Python - Ermitteln, ob die Zeit jetzt zwischen zwei Zeiten liegt
Ich versuche, die sauberste / pythonischste Methode zu finden, um zu bewerten, ob "jetzt" zwischen zwei Zeiten liegt. Jedoch; Die Start- / Endzeiten können über eine Tagesgrenze fallen oder auch nicht (nur anhand einfacher Beispiele):
onhour=23
onmin=30
offhour=4
offmin=15
timenow = datetime.datetime.now().time()
Einen Straight machenif START < NOW < END
Szenario funktioniert dafür nicht!
Was ich derzeit habe, ist ein Code, der auswertet, ob es derzeit "NightTime" ist, was so aussieht:
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
Entschuldigung, wenn der Titel nicht nach etwas Neuem klingt, aber ein paar existierende Antworten auf ähnliche Probleme wie:
Unterschied zwischen zwei Zeitintervallen?Mir ist aufgefallen, dass dies keine Fälle zu berücksichtigen scheint, in denen die Start- und Endzeiten über eine Tagesgrenze hinaus liegen.
Außerdem; Ideen zum Hinzufügen einer tagesbasierten Planung wären ebenfalls sehr nützlich! dh "Für Mo - Fr, um 23:00 Uhr einschalten, um 04:00 Uhr ausschalten" - aber für einen Tag auf beiden Seiten ein- und ausschalten (ansonsten wird am Freitag etwas eingeschaltet, am Samstag jedoch nicht ausgeschaltet - und doch, einschließlich Samstag bedeutet, dass es um 23 Uhr wieder eingeschaltet wird! ...)
Ich habe überlegt, ein einfaches "Bei X einschalten, für Y schlafen" durchzuführen, um dies zu umgehen. Wird das Skript jedoch während eines "Ein" -Zyklus gestartet, wird es erst beim nächsten Durchlauf gestartet. Aber es scheint die einfachste Option zu sein! :)
Ich hoffe, es gibt eine Art fantastisches Modul, das all das leistet ...: D
Die Kompatibilität von Python2.7 - 3.2 ist mir auch sehr wichtig!