Beim Importieren von Listen aus Unix oder Linux in OpenOffice ist in diesen Listen manchmal ein Timestamp als Zeit in Sekunden seit dem 1.1.1970 angegeben. In OpenOffice lässt sich dieser Zeitwert mit Hilfe einer Formel in ein mit OpenOffice darstellbares Datum oder eine Zeit umrechnen.
- die Unix-Zeit wird in Sekunden seit dem 01.01.1970 angegeben
- OpenOffice arbeitet mit Tagen seit dem 30.12.1899
- die Zeit in OpenOffice wird als Bruchteil von einem Tag dargestellt
Mit folgender Beispiel-Formel lassen sich Unix-Timestamps in OpenOffice-Calc in ein Datum und eine Zeit umrechnen:
<del>=GANZZAHL(<Quellzelle>/60/60/24)+DATWERT("01.01.1970")+((<Quellzelle>-GANZZAHL(<Quellzelle>/86400)*86400)/86400)</del>
oder viel einfacher (Danke an Burghard)
=<Quellzelle>/86400+DATWERT("1970-01-01")
<Quellzelle> ist dabei mit der ensprechenden Zellenangabe, in der der Zahlenwert des Unix-Timestamps steht zu ersetzen. Angezeigt wird in der Zelle nach Eingabe der Formel eine Zahl, welche dem OpenOffice Datum und der Zeit entspricht. Die Anzeige als Datum oder Zeit erreicht man anschließend durch Formatierung der Zelle als Datum oder Zeit.
Hallo,
> OpenOffice arbeitet mit Tagen seit dem 30.12.1999
1999 oder 1899 ??
in Libreoffice 3 kann als Referenz gewählt werden:
30.12.1899 (Standard)
01.01.1900 (StarCalc 1.0)
01.01.1904
Warum solch umständliche Formel? Bei mir funktioniert:
=/86400+DATWERT("1970-01-01")
--
Burghard
Der Tippfehler bei der Datumsbasis wurde korrigiert. Danke auch für den Hinweis auf die viel einfachere Formel. Hier war wohl wieder mal "warum einfach, wenns auch kompliziert geht" am Werk.
Es fehlt noch etwas in der Formal: Die UNIX-Zeit ist in UTC, daher fehlen aktuell (MESZ) zwei Stunden zur lokalen Zeit. Dat Calc eine passende Funktion (UTC zu local time)?
Es scheint keine OpenOffice/LibreOffice-Funktion zu geben, den Offset der lokalen Zeit gegenüber UTC herauszubekommen. In diesem Forumbeitrag ist jedoch ein (einigermaßen komplizierter) Weg beschrieben, wie man mit Hilfe von JavaScript + Basic den Offset herausbekommt.
Hallo
wie lautet den die Formel um den umgekehrten Weg zu gehen? Ich möchte ein Datum in Unixzeit umrechnen.
Die Funktionsnamen zwischen Excel, Open- und LibreOffice scheinen sich zu unterscheiden. Für LibreOffice funktioniert die Umwandlung einer Datum/Zeit-Angabe in einen Unix-Timestamp mit
=RUNDEN((A1-DATUMWERT("01.01.1970"))*86400)
=(A1-DATUMWERT("01.01.1970"))*86400
wobei A1 die Zelle mit dem Datum (incl. Uhrzeit) ist.
=(A1-25569)*86400
funktioniert bei mir auch. Ich gehe davon aus, dass die Anzahl der Tage vom 30.12.1899 bis 01.01.1970 mit 25.569 unveränderlich sein sollte.
DATWERT funktioniert bei mir in LibreOffice nicht, daher nehme ich DATUMWERT.