Unix-Zeit zählt Sekunden ab 1970
Ein Unix-Zeitstempel ist die Zahl der Sekunden seit Mitternacht UTC am 1. Januar 1970. Er kennt weder Zeitzone noch Sommerzeit, weshalb Server und Datenbanken Zeitpunkte so speichern. Ein lesbares Datum ist diese Zahl, dargestellt in einer bestimmten Zeitzone.
Die Stellenzahl verrät die Einheit. Zehn Stellen bedeuten Sekunden, dreizehn Stellen Millisekunden. JavaScript arbeitet mit Millisekunden, Unix-Werkzeuge und viele Datenbanken mit Sekunden – mit tausend zu multiplizieren oder durch tausend zu teilen, gehört daher zum Alltag.
ISO 8601 ist die genormte Schreibweise, etwa 2026-09-16T00:00:00Z. Das Z am Ende steht für UTC, und ein Versatz wie +09:00 erscheint, wenn eine Zeitzone angegeben ist. Wer Daten in diesem Format austauscht, beseitigt die Mehrdeutigkeit, die durch die je nach Land unterschiedliche Reihenfolge von Tag, Monat und Jahr entsteht.
Fehler, die von Zeitzonen herrühren
Der Zeitstempel hat keine Zeitzone, das Datum auf dem Bildschirm aber schon. New York liegt im Sommer vier Stunden hinter UTC, Mitternacht UTC am 16. September ist dort also noch 20 Uhr am 15. September. Wer nur Daten vergleicht, sieht daher scheinbar eine Verschiebung um einen Tag.
Wer Sekunden und Millisekunden vermischt, landet im Jahr 1970 oder Zehntausende Jahre daneben. Landet eine Umrechnung auf dem 1. Januar 1970, wurde ein Millisekundenwert als Sekunden gelesen; eine Jahreszahl im Fünfzigtausenderbereich bedeutet das Umgekehrte.
Das Jahr-2038-Problem betrifft nur Systeme, die Sekunden in einer vorzeichenbehafteten 32-Bit-Ganzzahl zählen. Nach dem 19. Januar 2038 läuft der Wert über und wird negativ. Die meisten heutigen Umgebungen verwenden 64 Bit, daher tritt es inzwischen vor allem in alten eingebetteten Geräten und veralteten Datenbankspalten auf.