Unix-Zeitstempel wandeln
Rechnet zwischen Unix-Zeitstempel und Datum um — in beide Richtungen, in Sekunden oder Millisekunden, mit laufender Anzeige der aktuellen Zeit.
Computer speichern Zeitpunkte nicht als „30. August 2026, 14:30 Uhr", sondern als eine einzige Zahl: die Sekunden seit dem 1. Januar 1970, 0 Uhr UTC. Dieser Nullpunkt heißt Epoche, die Zahl Unix-Zeitstempel. Der Vorteil liegt auf der Hand — mit einer Zahl lässt sich rechnen und vergleichen, ohne sich um Monatslängen, Schaltjahre und Zeitzonen zu kümmern.
Ihr begegnet solchen Zahlen überall dort, wo Technik durchscheint: in Protokolldateien, in Datenbanken, in Schnittstellen, in Dateinamen von Sicherungskopien. Das Script rechnet in beide Richtungen — Zeitstempel zu Datum und Datum zu Zeitstempel — und zeigt das Ergebnis sowohl in eurer Ortszeit als auch in UTC. Ganz oben läuft die aktuelle Zeit mit, sodass ihr jederzeit den gegenwärtigen Zeitstempel ablesen könnt.
Eine häufige Stolperfalle nimmt euch das Script ab: Manche Systeme zählen Sekunden, andere Millisekunden — JavaScript zum Beispiel arbeitet intern mit Millisekunden, die meisten anderen Sprachen mit Sekunden. Wer die beiden verwechselt, landet entweder im Jahr 1970 oder in ferner Zukunft. Das Script erkennt am Zahlenumfang, was gemeint ist, und sagt euch, wovon es ausgeht.
Und noch eine Zahl zum Merken: 2.147.483.647. Das ist der größte Wert, der in eine vorzeichenbehaftete 32-Bit-Zahl passt, und er wird am 19. Januar 2038 um 3:14:07 UTC erreicht. Ältere Systeme, die den Zeitstempel so speichern, springen dann ins Jahr 1901 zurück — das „Jahr-2038-Problem", der späte Nachfahre des Jahr-2000-Problems. Moderne Systeme benutzen längst 64 Bit und wären damit bis weit nach dem Ende der Sonne gerüstet.
Verwandtes: Tage zwischen zwei Daten rechnet mit denselben Millisekunden, Alter in Sekunden nutzt sie für eine eindrucksvolle Zahl, und die Digitaluhr zeigt die Gegenwart in lesbarer Form.
Zeitstempel mit mehr als elf Stellen werden als Millisekunden gelesen, kürzere als Sekunden.
So funktioniert das Script
Die eigentliche Umrechnung ist eine Multiplikation mit 1000. Interessant sind die Fragen drumherum: Wie erkennt man die Einheit, wie behandelt man Zeitzonen, und woran merkt man, dass eine Eingabe Unsinn war?
const alsMillisekunden = Math.abs(zahl) > 99999999999;
const datum = new Date(alsMillisekunden ? zahl : zahl * 1000);
JavaScript rechnet intern in Millisekunden, deshalb müssen Sekunden-Zeitstempel mit 1000 multipliziert werden. Die Erkennung der Einheit ist eine Abschätzung: Elf Stellen in Sekunden entsprächen dem Jahr 5138 — solche Werte kommen praktisch nicht vor, während ein Millisekunden-Zeitstempel von heute dreizehn Stellen hat. Die Grenze dazwischen ist deshalb eine sichere Bank. Das Script sagt trotzdem dazu, wie es die Zahl gelesen hat, statt stillschweigend zu entscheiden.
if (!/^-?\d+$/.test(roh)) { … }
Das Suchmuster prüft, ob die Eingabe von Anfang (^) bis Ende ($) nur aus Ziffern besteht, optional mit einem Minus davor. Diese Prüfung ist strenger als ein Number() mit anschließendem isNaN: Letzteres schluckt auch „1e9" oder „ 12 " klaglos. Vorher werden Punkte und Leerzeichen entfernt, damit auch eine kopierte Zahl wie „1.788.000.000" funktioniert.
const datum = new Date(datumWert + "T" + zeitWert);
Hier steckt eine wichtige Feinheit der Sprache. Eine Zeichenkette der Form 2026-08-30T12:00:00 ohne Zeitzonenangabe wird als Ortszeit gelesen. Hängt man ein Z an, gilt sie als UTC. Genau dieser Unterschied ist die Ursache unzähliger Fehler, bei denen Datumsangaben um ein oder zwei Stunden verrutschen. Hier ist die Ortszeit gewollt, denn der Besucher tippt seine eigene Uhrzeit ein.
if (isNaN(datum.getTime())) { … }
So prüft man ein Date-Objekt auf Gültigkeit. Ein misslungenes Date wirft keinen Fehler, sondern existiert als sogenanntes „Invalid Date" weiter und liefert bei getTime() den Wert NaN. Ohne diese Abfrage stünde am Ende ein „Invalid Date" in der Ausgabe — nicht falsch, aber auch nicht hilfreich.
"ISO 8601: " + datum.toISOString();
toISOString liefert die genormte Schreibweise 2026-08-30T12:00:00.000Z. Sie ist immer in UTC — das Z am Ende steht dafür — und eignet sich als Austauschformat zwischen Systemen, weil sie eindeutig ist und sich sogar als Text richtig sortieren lässt.
Zum Anpassen: Für die Zeit in einer bestimmten Zeitzone gebt ihr bei toLocaleString die gewünschte an, etwa { timeZone: "Asia/Tokyo" }. Und wenn ihr wissen wollt, wie weit ein Zeitstempel zurückliegt, zieht ihn von Date.now() ab und teilt durch 86400000 — das ergibt den Abstand in Tagen.
Script für die eigene Homepage
Kopiert euch den kompletten Code und fügt ihn an der Stelle eurer Seite ein, an der das Script erscheinen soll. Er läuft ohne weitere Dateien und ohne fremde Server.
Mehr aus der Kategorie Datum & Uhrzeit
-
An welchem Wochentag wurde ich geboren?
-
Analoge Uhr
-
Analoge Uhr mit römischen Ziffern
-
Arbeitstage berechnen
-
Chinesisches Tierkreiszeichen
-
Digitaluhr
-
Jahreszeit
-
Kalender
-
Kalender mit Uhrzeit und Feiertagen
-
Kalenderwoche berechnen
-
Mondphase berechnen
-
Osterdatum berechnen
-
Schaltjahr prüfen
-
Sternzeichen ermitteln
-
Tage bis zum Jahr 3000
-
Tage zwischen zwei Daten
-
Uhrzeit in Worten
-
Weltzeituhr
-
Zeitumstellung