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!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage