NEWS
Zeitdifferenz berechnen basierend auf...
-
Moin,
folgendes Thema: Ich habe einen Zeitwert1, z.B. "05:00" und eine Länge1 dazu, bspw. "00:01" und möchte und prüfen, ob der Zeitwert2 größer ist als Zeitwert1 + Länge1.
Dazu habe ich gedacht könnte ich den neuen Block "Zeitdifferenz berechnen basierend auf" nutzen, komme aber anscheinend nicht damit klar. Das Ergebnis des Debugs ist nicht etwa "05:01", sondern "05:0060000", also ein String, der statt die Minute korrekt zu addieren diese in ms einfach hinten an den ersten Wert in Form einer Zeichenkette anhängt.
Was mache ich falsch? -
@joergh iobroker Rechnet in Millisekunden.
60000 Millisekunden sind 1 Minute.in welchem Format liegt den 05:00 im Datenpunkt vor?
-
@homoran Als String, also "05:00", deshalb dachte ich wandele ich den ja auch erstmal in SS:mm zu einer Zeit um und addiere dann die Minute...das Wandeln klappt aber wohl so nicht..?
-
@homoran said in Zeitdifferenz berechnen basierend auf...:
@joergh iobroker Rechnet in Millisekunden.
600000 Millisekunden sind 1 Minute.Eine Null zu viel
-
@joergh sagte in Zeitdifferenz berechnen basierend auf...:
@homoran said in Zeitdifferenz berechnen basierend auf...:
@joergh iobroker Rechnet in Millisekunden.
600000 Millisekunden sind 1 Minute.Eine Null zu viel
korrigiert!
ich war so im Nullentippwahn drin..... -
@joergh sagte in Zeitdifferenz berechnen basierend auf...:
Dazu habe ich gedacht könnte ich den neuen Block "Zeitdifferenz berechnen basierend auf" nutzen
Der Block ist dafür gar nicht geeignet.
- Du formatierst den Wert erst zu einem String (
SS:mm
) - das führt generell schon zu Problemen mit der Zeitzone. Siehe https://www.youtube.com/watch?v=sxkz3O6nfFQ - Und dann willst Du auf diesen String etwas addieren. Das klappt so nicht. Daher ist das Ergebnis auch
05:0060000
- also Deine05:00
und daran angehängt60000
(= 60.000 Millisekunden). Weil es zu einer String-Verkettung wird statt eine Addition.
Du brauchst das "Datum-Objekt" und dann kannst Du da addieren. Und danach dann formatieren - aber bitte nicht mit dem Block zu
SS:mm
(siehe Video). - Du formatierst den Wert erst zu einem String (
-
@haus-automatisierung
Danke für die Antwort.Ich brauche nur die Stunde und die Minute (kommen aus der vis durch das jqui - ctrl- Datetime Widget), da ich daraus wieder einen Cronjob machen möchte und halt nicht das komplette Datumsformat. Die Wandelei ins komplette Datumsformat und wieder zurück wäre nur Aufwand, den ich vermeiden wollte.
Ich hatte die Hoffnung, dass der neue Block das vielleicht kann. Dann wandel ich halt alles wie bisher immer in Minuten und vergleiche so. -
@joergh sagte in Zeitdifferenz berechnen basierend auf...:
da ich daraus wieder einen Cronjob machen möchte
Den neuen Trigger kennst Du? https://youtu.be/69OB3TVRSck?si=x5iFwUT9Er5cEz8V&t=89
-
@haus-automatisierung Danke, den habe ich vorhin auch entdeckt. Der ist gut, aber halt für Wiederholungen alle 24 Stunden.
Ich programmiere gerade eine Bewässerungssteuerung und die nach der Logik:
alle x Tage soll um y Uhr z Minuten lang gewässert werden.Da reicht er mir leider auch noch nicht, sondern ich bastele mir das Cronfile als Text zusammen und nutze dann den Zeitplan mit Cronregel.
Ich habe zwei Kreise und will halt verhindern, dass beide gleichzeitig laufen könnten, indem ich schaue ob jemand überschneidende Zeiträume eingeben will und das verhindere, dafür die Prüferei.
Deine Videos schaue ich immer wieder mal, wenn ich eine Frage habe, finde ich sehr gut gemacht!