If Zeit > = Abfrage über Uhrzeit

  • Hallo zusammen,

    Ich möchte überprüfen ob die aktuelle Uhrzeit zwischen zwei vorgegebenen Zeitangaben liegt.
    Nun ich habe mir das so vorgestellt:

    Code
    with open('config.txt', 'r') as myfile:
         data=myfile.read().replace('\n', '')
         data1=data.replace(' ', '')
     r,g,b,Einschaltzeit,Ausschaltzeit,Auto,Ein,Prozent  = data.split(";")  
    
    
    zeit=time.strftime("%H:%M");
    zeit2=time.strftime("%H:%M:%S");
     if zeit >= Einschaltzeit and zeit < Ausschaltzeit:

    Nun ist das Problem das ich ein gpio zwischen 19:00 und 6:00 uhr Morgens Schalten möchte.

    Das geht natürlich nicht da in meinem Programm dann, das licht nie Brennt weil die zeit (zb: 20:00) Uhr Grösser als 06:00 ist (zeit < Ausschaltzeit:)

    wie kann ich das lösen :)

    Ready when you are :bravo2:

  • Hm versuchs mal so:

    [code=php]
    import time

    #Times in 24h Format
    startTime = 19
    endTime = 06

    hourNow = int(time.strftime('%H'))
    startTime2 = int(startTime - 1)
    if startTime2 == -1:
    startTime2 = 23
    if (hourNow > startTime2) and (hourNow is not int(endTime)):
    print "..Es ist Zeit.."
    [/php]


    //EDIT: Wenn man die Vergleichswerte nicht eindeutig in int() wandelt scheint der Vergleich irgendwie fehlerhaft... kA wieso


  • //EDIT: Wenn man die Vergleichswerte nicht eindeutig in int() wandelt scheint der Vergleich irgendwie fehlerhaft... kA wieso

    Weil du Äpfel nicht mit Birnen vergleichen kannst/sollst.
    Darum empfiehlt es sich, dass ``datetime`` Modul zu verwenden. So kommt man nicht auf die Idee, Strings und Integers etc. miteinander zu vergleichen und zu vermischen, denn das besagte Modul stellt ein einheitliches Objekt bzw Datentyp zur Verfügung.

  • Die notwendige Literatur:
    https://docs.python.org/2/library/date…tetime.datetime

  • Hallo Bootsmann,

    Dies Funktioniert nur Teilweise aber ich weis was du meinst. Nun ist das Problem, der GPIO soll Jeden Tag um die Zeit ein und Ausgeschaltet werden.
    Daher wird das mit dem Datum sehr schwirig. :s

    Ready when you are :bravo2:

  • Hallo,

    nee, wird es nicht. Da du dir so wie so ja jedesmal ein `datetime` Objekt bauen muss, kannst du dir es auch mit Datum bauen.

    [code=php]>>> now = datetime.datetime.now()
    >>> year = now.year
    >>> month = now.month
    >>> day = now.day
    >>> print(year, month, day)
    2016 7 13
    >>> [/php]

    Stunde und Minute bekommst du aus deiner Datei - dann hast du alles für das `datetime` Objekt.

    Alternativ kann du auch Startzeitpunkt und die Laufzeit in der Datei hinterlegen und dann nach Erreichen der Laufzeit abschalten. Dafür kennen datetime-Objekte eine timedelta-Methode.

    Gruß, noisefloor

  • Oder Du nimmst das Datum raus, indem Du mit datetime.time-Objekten arbeitest. Vorschlag, ungetestet:

    [code=php]
    def an(Einschaltzeit,Ausschaltzeit):
    ez = datetime.datetime.strptime(Einschaltzeit, "%H:%M").time()
    az = datetime.datetime.strptime(Ausschaltzeit, "%H:%M").time()

    assert ez != az

    jetzt = datetime.datetime.now().time()

    if ez < az:
    return ez <= jetzt < az

    return not az <= jetzt < ez
    [/php]

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!