Seite 1 von 1

[gelöst] - Berechnung - Tage zwischen Heute und Messbeginn (DateTime)

Verfasst: 2. Jul 2022 00:17
von Florian.Reinartz
Moin in die Runde,
ich habe "jetzt" doch angefangen alles auf openHAB 3.3 umzumodeln.
Also zweiten Raspberry und zurück auf los...
Ich habe allerdings die meisten *.ules, *.items und *.things übernommen bzw. angepasst.
Eins von zwei Rätseln möchte ich mit Eurer Hilf lösen:
In opanHAB 2.5 habe ich die Differenz zwischen heute und einem DateTime-Item (Messbeginn) in Tagen wie folgt berechnet:

Code: Alles auswählen

rule "Beginn der Messung Tasmota 043"
    when
        //Time cron "*/30 * * * * ?" or
        //Time cron "0 * * * * ?" or
        Item Tasmota043_Pool_Messbeginn received update or
        Item Tasmota043_Pool_Messbeginn changed
    then
        var dtStart  = new DateTime((Tasmota043_Pool_Messbeginn.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
        val Diff     = now.millis - dtStart.millis
        val iDays    = (Diff / 1000 / 60 / 60 / 24).intValue                             // volle Tage
        Tasmota043_Pool_Messdauer.postUpdate(iDays)
end
In openHAB 3.3 funktioniert die Rule aber so nicht mehr!
Weiß jemand was ich ändern muss?
Danke und Gruß
Florian

PS: Muss die Signatur noch anpassen ;-)

Re: Berechnung - Tage zwischen Heute und Messbeginn (DateTime)

Verfasst: 2. Jul 2022 01:44
von peter-pan
...vielleicht hilft dir dieser Schnipsel als Beispiel weiter:

Code: Alles auswählen

val vDiffNext = (Tasmota043_Pool_Messbeginn.state as DateTimeType).getZonedDateTime.getDayOfYear() - LocalDate.now.getDayOfYear()
logInfo("test","Differenz in Tagen : {}", vDiffNext)

Re: Berechnung - Tage zwischen Heute und Messbeginn (DateTime)

Verfasst: 2. Jul 2022 13:46
von Florian.Reinartz
Moin,
hat funktioniert, danke.
Allerdings habe ich die Rechnung umgedreht damit ich keine negative Zahl raus bekomme (heute - Messbeginn)

Code: Alles auswählen

val vDiffNext_Tasmota043 = LocalDate.now.getDayOfYear() - (Tasmota043_Pool_Messbeginn.state as DateTimeType).getZonedDateTime.getDayOfYear()
Gruß
Florian

Re: [gelöst] - Berechnung - Tage zwischen Heute und Messbeginn (DateTime)

Verfasst: 2. Jul 2022 18:39
von peter-pan
...ja ist klar. Sollte nur als Beispiel herhalten. Aber Achtung bei Jahreswchsel. Da Weiss ich nicht, ob das klappt. !!! ;)