OH 3: Konvertierung DateTime Item in LocalDateTime

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
wykoo
Beiträge: 2
Registriert: 6. Jun 2020 16:17

OH 3: Konvertierung DateTime Item in LocalDateTime

Beitrag von wykoo »

Hallo,

ich arbeite mit
- Raspberry Pi 3
- Raspbian 10
- openHAB 3.1.0.M3
- OpenJDK Zulu 11.45+27

In der .items Datei habe ich folgendes Item deklariert

Code: Alles auswählen

DateTime Sonnenuntergang  "Sonnenuntergang (Ende) [%1$tH:%1$tM]"  <sunset>  (gAstro) channel="astro:sun:local:set#end"}
Nun möchte ich in der .rules Datei den Inhalt in einen LocalDateTime Typ umwandeln um die Berechnungsmethoden ( plusMinutes() usw.) verwenden zu können.

Code: Alles auswählen

var LocalDateTime SonnenAufgangKonvertiert = LocalDateTime.parse(Sonnenaufgang.state.toString)
im LogViewer erhalte ich folgende Fehlermeldung

Code: Alles auswählen

2021-04-11 14:45:28.242 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Home-19' failed: Text '2021-04-11T06:32:00.000+0200' could not be parsed, unparsed text found at index 23 in Home
Das liegt offensichtlich daran, dass Datum und Uhrzeit in der Form: '2021-04-11T06:32:00.000+0200' gespeichert sind.
Der String '2021-04-11T06:32:00' wird problemlos gewandelt.

Was ist an der Umwandlung falsch?

Danke im Voraus
wykoo
von udo1toni » 11. Apr 2021 18:42
Das Problem dürfte das +200 am Ende des Strings sein. Du könntest das schmutzig lösen (substring(0,23) oder substring(0,20)) oder aber die korrekte Konvertierung verwenden ;) das wäre dann ZonedDateTime statt LocalDateTime. Laut englischem Forum sowas:

Code: Alles auswählen

val MyJavaTimeFromDateTimeItem = (MyDateTimeItem.state as DateTimeType).getZonedDateTime()
Gehe zur vollständigen Antwort

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: OH 3: Konvertierung DateTime Item in LocalDateTime

Beitrag von udo1toni »

Das Problem dürfte das +200 am Ende des Strings sein. Du könntest das schmutzig lösen (substring(0,23) oder substring(0,20)) oder aber die korrekte Konvertierung verwenden ;) das wäre dann ZonedDateTime statt LocalDateTime. Laut englischem Forum sowas:

Code: Alles auswählen

val MyJavaTimeFromDateTimeItem = (MyDateTimeItem.state as DateTimeType).getZonedDateTime()
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

wykoo
Beiträge: 2
Registriert: 6. Jun 2020 16:17

Re: OH 3: Konvertierung DateTime Item in LocalDateTime

Beitrag von wykoo »

Das funktioniert !!!

Vielen, vielen Dank

Antworten