Umrechnung von Unixzeit

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

SmartHomer
Beiträge: 51
Registriert: 17. Mai 2018 09:26

Umrechnung von Unixzeit

Beitrag von SmartHomer »

Hallo,

ich bin auf der Suche nach einer Möglichkeit zur Umrechnung eines Unix timestamp in eine klassische Uhrzeit.

Beispielsweise habe ich folgenden timestamp 1530003600 welchen ich über das http Binding Abfrage. Dieser timestamp entspricht dem 26.06.2018 - 11:00:00 Uhr. Im nächsten Schritt benötige ich aus dieser Umrechnung nur die Uhrzeit also den Wert 11 zur weiteren Berechnung.

Gibt es hierfür Lösungsansätze?

Danke!

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41

Re: Umrechnung von Unixzeit

Beitrag von hr3 »


hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41

Re: Umrechnung von Unixzeit

Beitrag von hr3 »

oder einfach mal aus den eigenen Fragen lernen
viewtopic.php?f=13&t=678&p=3009#p3009

SmartHomer
Beiträge: 51
Registriert: 17. Mai 2018 09:26

Re: Umrechnung von Unixzeit

Beitrag von SmartHomer »

Ich möchte aber den Zeitstempel umrechnen in eine Uhrzeit um dann die Stunde von diesem Zeitstempel abzufragen ?

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

Re: Umrechnung von Unixzeit

Beitrag von udo1toni »

Die Unixzeit ist die Anzahl Sekunden seit dem 1.1.1970, 0:00:00 Uhr

Wenn es wirklich nur um die Zeit geht, wäre es wohl das einfachste, die Uhrzeit auszurechnen:

Code: Alles auswählen

var Number unixtime = 1530003600
var Number zeit = unixtime % (60*60*24)
var Number Stunden = (unixtime % (60*60*24)/(60*24)).intValue
var Number Minuten = (unixtime % (60*60)/60).intValue
var Number Sekunden = unixtime % (60) //Rest bei Teilen durch 60
Das ist streng genommen etwas verkürzt, aber da intValue den größen ganzzahligen Anteil kleiner oder gleich der Zahl liefert, sollte es trotzdem funktionieren.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

SmartHomer
Beiträge: 51
Registriert: 17. Mai 2018 09:26

Re: Umrechnung von Unixzeit

Beitrag von SmartHomer »

Ich möchte aus einem beliebigen Unix timestamp nur die aktuelle Stunde wissen. Wie sieht hierfür eine Umwandlung mit Hilfe von eine rule aus?

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

Re: Umrechnung von Unixzeit

Beitrag von udo1toni »

Steht schon da...

;)

Code: Alles auswählen

var Number Stunden = ((unixtime % (60*60*24))/(60*60)).intValue
Ich denke, den Rule-Rahmen bekommst Du selbst drum :)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

SmartHomer
Beiträge: 51
Registriert: 17. Mai 2018 09:26

Re: Umrechnung von Unixzeit

Beitrag von SmartHomer »

Ich bekomme halt immer die Fehlermeldung
Unknown variable or command '%'; line 22, column 28, length 21

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

Re: Umrechnung von Unixzeit

Beitrag von udo1toni »

Hmm... Ich erinnere mich, dass es da ein Problem gab. Vielleicht fehlt noch eine Library. Im Zweifel kannst Du es aber auch zu Fuß ausrechnen:

Code: Alles auswählen

val Days=(unixtime/(24*60*60)).intValue
val Rest=(unixtime - Days*24*60*60)
val Stunden = (Rest/(60*60)).intValue
Oder als langer Term:

Code: Alles auswählen

val Stunden = ((unixtime - (unixtime/86400).intValue*86400)/3600).intValue
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

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

Re: Umrechnung von Unixzeit

Beitrag von udo1toni »

Hmm... Ich erinnere mich, dass es da ein Problem gab. Vielleicht fehlt noch eine Library. Im Zweifel kannst Du es aber auch zu Fuß ausrechnen:

Code: Alles auswählen

val Days=(unixtime/(24*60*60)).intValue
val Rest=(unixtime - Days*24*60*60)
val Stunden = (Rest/(60*60)).intValue
Oder als langer Term:

Code: Alles auswählen

val Stunden = ((unixtime - (unixtime/86400).intValue*86400)/3600).intValue

... Hab's grade nochmal ausprobiert. der Modulo-Operator funktioniert nur, wenn es um ein .intValue geht. Also müsste auch

Code: Alles auswählen

val Stunden = ((unixtime.intValue % 86400)/3600).intValue
funktionieren.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten