Unix-Zeitstempel ohne Kopfschmerzen
Fragen Sie drei Entwickler, wie spät es ist, und Sie bekommen vielleicht drei Antworten, je nachdem, wo sie sitzen. Fragen Sie einen Unix-Zeitstempel, und Sie bekommen genau eine Zahl, dieselbe für jeden auf dem Planeten. Diese einzelne Ganzzahl ist der Grund, warum die Epochenzeit fast jede Logdatei, jede Datenbankzeile und jede API-Antwort, die Sie je anfassen werden, stillschweigend untermauert. Diese Seite erklärt, was diese Zahl bedeutet, wie man sie in beide Richtungen liest und wo sie den Menschen gern in den Rücken fällt.

Was Unix-Zeit eigentlich ist
Ein Unix-Zeitstempel ist die Anzahl der Sekunden, die seit 00:00:00 UTC am 1. Januar 1970 vergangen sind, ohne Schaltsekunden zu zählen. Dieser Moment wird Epoche genannt und wurde von frühen Unix-Ingenieuren schlicht deshalb gewählt, weil er ein bequemes, rundes Datum zum Zählen war. Zur Epoche beträgt der Wert genau 0. Jede Sekunde seither addiert eins, sodass die Zahl nur wächst. Daten vor 1970 sind ebenfalls völlig gültig und werden als negative Ganzzahlen ausgedrückt.
Sie werden dieses Konzept auch POSIX-Zeit oder lose Epochenzeit nennen hören. Wie auch immer das Etikett lautet, die Mechanik ist dieselbe: ein stetig ansteigender Zähler von Sekunden. Da es eine schlichte Ganzzahl statt einer formatierten Zeichenkette ist, kann ein Computer sie in wenigen Bytes speichern und zwei davon mit einer einzigen Subtraktion vergleichen.
Sekunden, Millisekunden und Verwandte
Die klassische Unix-Zeit zählt ganze Sekunden, was die vertraute zehnstellige Zahl ergibt, die Sie heute sehen. Doch viele Umgebungen brauchen eine feinere Auflösung. JavaScript etwa arbeitet in Millisekunden und erzeugt einen dreizehnstelligen Wert, und manche Systeme gehen weiter bis in Mikro- oder Nanosekunden. Eine verlässliche Faustregel: Eine zehnstellige Zahl sind Sekunden, dreizehn Stellen sind Millisekunden. Wenn Ihr umgewandeltes Datum irgendwo um 1970 landet, obwohl Sie die Gegenwart erwartet haben, haben Sie mit ziemlicher Sicherheit Millisekunden in ein Sekundenfeld eingespeist oder umgekehrt. Unser Konverter erkennt die Größenordnung automatisch, sodass Sie selten raten müssen.
Warum Entwickler sich darauf stützen
Der große Vorteil ist, dass ein Zeitstempel zeitzonenneutral ist. Die Ganzzahl 1735689600 bezieht sich auf denselben Augenblick in Tokio, Berlin und São Paulo. Diese Zahl statt einer formatierten lokalen Zeichenkette zu speichern bedeutet, dass Sie sich nie fragen müssen, zu welcher Uhr ein Wert gehörte. Auch das Sortieren ist trivial, denn die chronologische Reihenfolge ist einfach die numerische Reihenfolge, sodass ein Datenbankindex über einer Zeitstempelspalte Ereignisse ohne Parsing korrekt sortiert. Die Arithmetik ist ebenso sauber: Der Abstand zwischen zwei Ereignissen ist eine Subtraktion, und einen Tag hinzuzufügen heißt 86400 zu addieren. Genau diese Eigenschaften sind der Grund, warum Logs, Token, Caches und Nachrichtenwarteschlangen alle zur Epochenzeit greifen.
Umwandeln in beide Richtungen
Von einem Zeitstempel zu einem menschlichen Datum zu gelangen bedeutet, die Anzahl der Sekunden zu nehmen und auf einen Kalender zu projizieren und das dann in der Zeitzone zu formatieren, die Sie interessiert. Andersherum nehmen Sie ein Jahr, einen Monat, einen Tag und eine Uhrzeit, entscheiden, in welcher Zeitzone sie ausgedrückt sind, und falten das wieder auf Sekunden seit der Epoche zusammen. Unser Werkzeug erledigt beide Richtungen sofort und vollständig in Ihrem Browser, sodass nichts, was Sie einfügen, Ihr Gerät verlässt. Fügen Sie eine Zahl ein, um sie zu dekodieren, oder wählen Sie ein Datum, um es zu kodieren, und lesen Sie das Ergebnis im selben Augenblick sowohl in UTC als auch in Ihrer Ortszeit.

UTC versus Ortszeit, die klassische Falle
Der Zeitstempel selbst hat keine Zeitzone; er ist stets an UTC verankert. Die Verwirrung tritt erst auf, wenn Sie ihn anzeigen. Wenn Sie 1700000000 umwandeln und Ihr Bildschirm eine Abendstunde zeigt, während ein Kollege in einem anderen Land einen Nachmittag sieht, ist nichts kaputt – Sie betrachten beide denselben Augenblick, dargestellt auf verschiedenen lokalen Uhren. Fehler schleichen sich ein, wenn Code ein lokales Datum so liest, als wäre es UTC, oder eine Wanduhrzeit stempelt, ohne den Versatz festzuhalten. Die sichere Gewohnheit ist, in UTC zu speichern und zu übertragen und einen lokalen Versatz erst im allerletzten Moment anzuwenden, wenn Sie den Wert einem Menschen zeigen. Vergleichen Sie im Zweifel mit der UTC-Zeile im Konverter statt mit Ihrer lokalen.
Das Jahr-2038-Problem
Viele ältere Systeme speicherten die Unix-Zeit in einer vorzeichenbehafteten 32-Bit-Ganzzahl. Diesem Feld geht eine Sekunde nach 03:14:07 UTC am 19. Januar 2038 der Platz aus, wenn der Zähler überläuft und auf eine negative Zahl umschlägt, was Daten möglicherweise zurück bis 1901 wirft. Es ist dieselbe Art von Problem wie das Jahr-2000-Problem. Die gute Nachricht ist, dass moderne Betriebssysteme und Sprachen weitgehend auf 64-Bit-Zeitstempel umgestiegen sind, die für rund 292 Milliarden Jahre nicht überlaufen, sodass es für neuen Code meist eher eine wissenswerte historische Kuriosität als ein Notfall ist.
Für weitere browserbasierte Helfer sehen Sie sich unsere Entwicklerwerkzeuge an, und falls Sie mit den Zahlen selbst arbeiten müssen, sind die Rechner nur einen Klick entfernt.
Häufig gestellte Fragen
Was ist ein Unix-Zeitstempel?
Es ist die Anzahl der Sekunden seit 00:00:00 UTC am 1. Januar 1970, ohne Schaltsekunden zu zählen. Dieser Startmoment wird Epoche genannt, und der Zähler steigt im Lauf der Zeit nur an.
Warum wandelt sich meine Zahl in ein Datum nahe 1970 um?
Sie haben wahrscheinlich Sekunden und Millisekunden verwechselt. Eine zehnstellige Zahl sind Sekunden und eine dreizehnstellige Zahl sind Millisekunden. Millisekunden in ein Sekundenfeld einzuspeisen teilt die scheinbare Zeit durch etwa tausend und bringt Sie nahe an die Epoche.
Hat ein Unix-Zeitstempel eine Zeitzone?
Nein. Der Wert ist stets an UTC verankert. Eine Zeitzone kommt erst ins Spiel, wenn Sie den Zeitstempel als menschenlesbares Datum anzeigen, weshalb dieselbe Zahl für verschiedene Menschen unterschiedliche Wanduhrzeiten zeigen kann.
Wie wandle ich ein Datum zurück in einen Zeitstempel um?
Geben Sie das Jahr, den Monat, den Tag und die Uhrzeit an, entscheiden Sie, in welcher Zeitzone dieses Datum ausgedrückt ist, und das Werkzeug faltet es auf Sekunden seit der Epoche zusammen. Sie können auf dieser Seite beide Richtungen sofort in Ihrem Browser erledigen.
Was ist das Jahr-2038-Problem?
Systeme, die die Unix-Zeit in einer vorzeichenbehafteten 32-Bit-Ganzzahl speichern, laufen eine Sekunde nach 03:14:07 UTC am 19. Januar 2038 über. Moderne 64-Bit-Zeitstempel vermeiden dies für Milliarden von Jahren, sodass die meiste aktuelle Software nicht betroffen ist.
Werden meine Daten an einen Server gesendet?
Nein. Die Umwandlung läuft vollständig in Ihrem Browser, sodass jeder Zeitstempel oder jedes Datum, das Sie einfügen, auf Ihrem eigenen Gerät bleibt.
