Zeit vergleich

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Guten morgen Gemeinde

    Mein Plan ist es, in mein Raspberry Pi einen Errinerungsassistenten einzubauen. Ich wollte damit beginnen, dass mir einen Print ausgegeben wird, wenn die jetzige Zeit mit einer vorher ausgewählten Zeit übereinstimmt. Was ich bis jetzt gemacht habe:

    Code
    def setAlert():
        now = time.strftime("%H:%M:%S")
       if now == "14:10:10":
           print("ALARMA")

    Dies kann logischerweise nicht funktionieren, da mein Programm (so wie ich denke jedenfalls) jede sekunde überprüfen muss :wallbash: , ob eine übereinstimmung vorhanden ist. Kann mir jemand eine Hilfestellung geben, wie ich das implementieren kann?

    Danke LG
    TheSchöpfer

    PS: Ich arbeite mit Python und Raspberry Pi. :danke_ATDE:


  • Wenn du mit Zeit/Daten arbeiten willst, dann nimmt man das ``datetime`` Modul. Denn das Vergleichen von Zeichenketten wie in deinem Beispiel kann schnell in die Hose gehen:

    Code
    >>> '01.06.2017' < '01.10.2016'
    
    
    True

    Müsste ich aber nicht so oder so etwas einbauen, dass mir jede sekunde überprüft? Wenn die Funktion zB um 15:50 aufgerufen wird, was nicht 16:10(gestellte zeit) ist, würde ich ein false bekommen. Und ich möchte einen Print in der sekunde, auf die ich die Zeit gestellt habe. Also quasi einen Wecker.

  • Da siehst du wie man mit 'datetime' arbeiten kann => https://github.com/meigrafd/Sampl…t_stoppuhr_2.py

    Einen Wecker zu basteln der Sekundengenau arbeitet ist IMHO übertrieben. Stunde und Minute reicht völlig. Und somit wäre denk ich der einfachste Weg das ganze über crontab zu regeln.. Das ruft dein Script jede Minute auf und du prüfst dann nur ob Stunde, Minute und Tag/Monat mit einer eingestellten Weckzeit übereinstimmt.


    PS: Bitte nicht Beiträge vollständig quoten/zitieren, vor allem wenn diese genau da drüber stehen.


  • Da siehst du wie man mit 'datetime' arbeiten kann => https://github.com/meigrafd/Sampl…t_stoppuhr_2.py

    Einen Wecker zu basteln der Sekundengenau arbeitet ist IMHO übertrieben. Stunde und Minute reicht völlig. Und somit wäre denk ich der einfachste Weg das ganze über crontab zu regeln.

    Ich schaue es mir gleich an danke, jedoch kommt es nicht darauf an ob ich sekunden oder stundengenau arbeiten will, trozdem müsste ich es irgendwie hinkriegen, dass mein Programm die ganze Zeit abfragt welche Zeit wir haben und vergleicht. Ob stunden, Minuten oder sekunden kommt es denke ich mal nicht drauf an. Aber ich werde mir gleich den link ansehen.

    EDIT:
    Ich habe mir den link angeschaut, ich weiss bereits wie man Datetime verwendet aber was auf dem link ist, hilft mir bei meiner aufgabe nicht besonders viel weiter da es sich bei dem link um eine Stopuhr handelt.

    Einmal editiert, zuletzt von TheSchoepfer (16. März 2017 um 10:02)

  • Tut mir leid wegen dem Fullquote.

    Wie gesagt, da ich offenbar falsch verstanden werde :s , ich benötige eine Funktion, die ständig aktualisiert. Das Problem liegt darin, lieber meigrafd, nicht irgendwelche sekunden stunden oder minuten abzuzählen sondern einen Vergleich zu machen. Damit ich zB immer einen Print um genau 16:20 Uhr bekomme. Das Ziel ist, jeden Tag eine Printbotschaft um eine bestimmte Zeit zu bekommen.


  • Die while-Schleife kennst du?

    Natürlich! Jedoch ist eine While-Schleife 1. nicht sehr schön in dem Zusammenhang 2. Laufen parallel noch andere Funktionen/Features und da Ressourcen in der Programmierung ein wichtiger Aspekt sind wäre eine While-Schleife nicht sehr hilfreich.

    Aber danke für den Schedule tipp das werde ich mir mal genauer ansehen.

  • Wenn du crontab und eine Schleife ablehnst, stellt sich die Frage wie du das sonst regeln willst? Entweder sind deine Anforderungen dann falsch angesetzt oder es mangelt uns an Informationen zu deinem restlichen Code - denn wenn du zB Tkinter nutzt kannst du dir in der Tat crontab/while sparen.


  • Wenn du crontab und eine Schleife ablehnst, stellt sich die Frage wie du das sonst regeln willst? Entweder sind deine Anforderungen dann falsch angesetzt oder es mangelt uns an Informationen zu deinem restlichen Code - denn wenn du zB Tkinter nutzt kannst du dir in der Tat crontab/while sparen.

    Wie gesagt. Deshalb nochmal. Es soll sekundengenau sein daher Lohnt sich Crontab nicht. Ich weiss nicht wie viel du über Informatik weisst, aber es geht auch um die Ressourcen(Nur über Raspberry Pi wissen zu verfügen ist nicht gleich Wissen über Informatik zu haben). Aber ich sehe schon wer nicht lesen kann ist klar im Nachteil. Ich werde dieses Forum nun verlassen, da antworten [font="Arial Black"]EINES MODS [/font][font="Arial"]"IMHO" auch "in my humble opinion" nicht hilfreich sind. Genau so wenig interessiert es mich ob du findest mein Wecker soll Minutengenau statt sekundengenau arbeiten. Kurz gesagt Wenn ich eine Frage habe und nach einer Lösung suche sollte die gegenpartei nicht anfangen demütigend zu werden. Ja demütigend denn ich kenne keine andere bezeichnung für Humble. :@ :@ :@ [/font]

    [font="Arial"] Freundliche Greez[/font]

    [font="Arial"]The Schöpfer[/font]

  • Wenn man Zeiten vergleichen will, nimmt man die Unix-Zeit. Hier hat man alles, was man braucht, in einer einzigen Zahl.

    Denn ist 23:46:00 größer oder kleiner 00:58:12?
    Genau, man benötigt das Datum ebenfalls.

    Nimmt man aber die Unix-Zeit kann man auch Erinnerungsfunktionen leicher einsetzte. So wie "15 Minuten früher"

    Computer ..... grrrrrr

  • Servus,


    ... da antworten [font="Arial Black"]EINES MODS [/font]...

    hm ... ein Mod hat sich zu Deinem Thema doch gar nicht geäussert, oder wie muss man das verstehen? :s

    btw: humble opinion heisst in meiner Welt "unmaßgebliche Meinung" ... hat also nix mit Demut zu tun ;)

    cu,
    -ds-

  • Wer spricht davon, dass der Mensch diese Arbeit machen solle?

    Wie reden hier über Computerprogramme, und bei denen der einfache Zahlenvergleich sehr viel einfacher, als Zahlen zu vergleichen, die in einen so ungewöhnlichen 'Zahlensystem', wie unserem aktuellen Zeitsystem stehen.

    Zitat

    1489666205.35

    ist eine Unix-Zeit?

    Zitat

    "15:05" < "16:02"


    Da man in solchen Fällen immer auch das Datum berücksichtigen müsste, nehmen wir mal als Datum den 16.3.2017 für beide Zeiten an.

    16.3.2017, 15:05:00 = 1489673100
    16.3.2017, 16:02:00 = 1489676520

    Für welche Angabe kann ein Computer schneller die Differenz ausrechnen?
    1489676520 - 1489673100
    16.3.2017, 16:02:00 - 16.3.2017, 15:05:00

    Die Umwandlung von 'lesbarer' Zeit in Unix-Zeit und zurück kann jede Programmiersprache, warum also mit Werten rechnen, die für normaler Rechnungen 'krumme' *berläufe haben, wenn man das mit einer einfachen Addition/Subtraktion erledigen kann?

    Computer ..... grrrrrr

    Einmal editiert, zuletzt von Rasp-Berlin (16. März 2017 um 14:36)


  • btw: humble opinion heisst in meiner Welt "unmaßgebliche Meinung" ... hat also nix mit Demut zu tun ;)

    Ich würde es eher mit "bescheidener Meinung" übersetzen, gebe Dir in der Sache aber recht. Wie man sich davon "gedemütigt" fühlen kann, daß jemand beim Erteilen eines Rates bemerkt, daß es sich dabei um seine eigene bescheidene Meinung handelt, ist mir nicht ganz einsichtig.

  • Servus bootsmann,


    ... Zeig mir ein lauffähiges Beispiel in Python.


    Du willst damit aber nicht ernsthaft sagen, dass es keine Unix-Time-Funktionen in Python gibt, oder?

    cheers,
    -ds-

  • @ds: selbstverständlich gibt es die. Ich würde allerdings nicht Strings vergleichen, sondern etwa so:

    Das alarm_raised ist da, damit der alarm nicht zweimal "klingelt", wenn man weniger als 60 Sekunden pausiert.

    LG

  • Meine Frage war dahingehend, wie Rasp-Berlin dies ohne das ``datetime`` Modul zu realisieren vermag...

Jetzt mitmachen!

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