DateTime Format formatieren

Für welche Projekte verwendet Ihr OpenHAB? Was habt Ihr automatisiert? Stellt eure Projekte hier vor.

Moderatoren: Cyrelian, seppy

Antworten
TomW80
Beiträge: 100
Registriert: 7. Mai 2021 19:11
Answers: 0

DateTime Format formatieren

Beitrag von TomW80 »

Hallo,

ich habe ein DateTime-Item das den Wert "2024-08-01T14:00:00.000+0200" enthält.
Diesen möchte ich gerne so formatieren: "01.08.2024 - 14:00"

Dazu habe ich den folgenden Befehl versucht:

Code: Alles auswählen

val TestDatum = String.format("%1$td.%1$tm.%1$tY, %1$tH:%1$tM", DWD_Unwetter_Warnungen_Valid_From_1.state)
Doch leider erhalte ich hier einen Fehler:
Script execution of rule with UID 'newruletest-4' failed: d != org.openhab.core.library.types.DateTimeType in newruletest
Was mache ich falsch?
Denn folgendes funktioniert:

Code: Alles auswählen

val TestDatum = String.format("%1$td.%1$tm.%1$tY, %1$tH:%1$tM", ZonedDateTime.now())
Gruß Tom

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

Re: DateTime Format formatieren

Beitrag von udo1toni »

Ja, das sind zwei unterschiedliche Datentypen.

Du musst aus dem DateTime Itemstate zunächst ein Java Time Objekt erzeugen:

Code: Alles auswählen

val jvtmValidFrom = (DWD_Unwetter_Warnungen_Valid_From_1.state as DateTimeType).getZonedDateTime()
val TestDatum = String.format("%1$td.%1$tm.%1$tY, %1$tH:%1$tM", jvtmValidFrom)
Streng genommen müsste man zunächst prüfen, ob das Item überhaupt ein gültiges Datum enthält. Gerade bei DWD Unwetter ist das evtl. gar nicht der Fall. Also besser vorher noch ein

Code: Alles auswählen

if(DWD_Unwetter_Warnungen_Valid_From_1.state instanceof DateTimeType)
und entsprechend reagieren (also z.B. die Konvertierung komplett überspringen, falls der Datentyp nicht passt).

Eine sehr gute Erläuterung aller DateTime Datentypen und der (notwendigen) Konvertierung zwischen diesen Datentypen findest Du hier: https://community.openhab.org/t/datetim ... 3-x/107197 (das ist AB openHAB3, nicht exklusiv openHAB3. Das gleiche gibt es auch für openHAB2 - hier nur der Vollständigkeit halber erwähnt, Link spare ich mir mal...)
openHAB4.2.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.8, LXC), mit openHABian eingerichtet

TomW80
Beiträge: 100
Registriert: 7. Mai 2021 19:11
Answers: 0

Re: DateTime Format formatieren

Beitrag von TomW80 »

Danke udo1toni, funktioniert. :-)
Aus der verlinkten Doku wäre ich nicht auf die Lösung gekommen. Wenn ich mir dort das Bild anschaue, müsste dann nicht auch Option #12 direkt gehen?

Code: Alles auswählen

val String TestDatum = DWD_Unwetter_Warnungen_Valid_From_1.state.format("%1$td.%1$tm.%1$ty %1$tH:%1$tM")
Habs getestet, funktioniert auch.

Antworten