Die Idee in einem Satz
Ein Unix-Zeitstempel zählt Sekunden (manchmal Millisekunden) seit einer vereinbarten Epoche: 1970-01-01T00:00:00Z—Mitternacht UTC am 1. Januar 1970—ohne Schaltsekunden in der üblichen POSIX-Definition. Diese eine Ganzzahl speichert einen Zeitpunkt eindeutig, ohne Zeitzonenlabel.
Wandeln Sie einen numerischen Stempel mit dem Unix-Zeitstempel zu Datum in ein lesbares Datum um.
Warum Entwickler Epochensekunden mögen
Zivilkalender brauchen Kalenderregeln, Zeitzonen und Sommerzeit. Momentane Ereignisse—„diese Bestellung wurde bezahlt“, „dieses Zertifikat läuft ab“, „diese Logzeile wurde geschrieben“—lassen sich leichter als monotoner Zähler von einem festen Ursprung speichern. Unix-Zeit reist gut zwischen Sprachen, Datenbanken und APIs. Sortieren ist Integer-Sortieren; Differenzen sind Subtraktion.
Der Preis ist Lesbarkeit für Menschen: 1710000000 sagt wenig, bis man konvertiert. Tools und Bibliotheksformatter schließen die Lücke.
Sekunden versus Millisekunden versus Nanosekunden
Konventionen unterscheiden sich:
| Einheit | Typische Nutzung | Beispiel-Länge (2020er) |
|---|---|---|
| Sekunden | POSIX, viele APIs | 10 Ziffern |
| Millisekunden | JavaScript Date, manche DBs | 13 Ziffern |
| Mikro/Nano | Hochauflösende Metriken | längere Integer |
Ein Millisekundenwert an eine API, die Sekunden erwartet, erzeugt Daten weit in der Zukunft. Sekunden an eine Millisekunden-API landen nahe 1970. Bei Integration Doku prüfen und mit einem bekannten Zeitpunkt testen.
JavaScripts Date.now() liefert Millisekunden. Viele Backend-Frameworks defaulten auf Sekunden. JSON-Feldnamen wie createdAtSeconds machen die Einheit explizit.
UTC und lokale Anzeige
Der Stempel selbst ist UTC-basiert. Anzeige in Berlin oder Tokio wendet eine Zeitzonenumrechnung für Menschen an; die gespeicherte Zahl ändert sich nicht. Speichern Sie UTC-Instantzeiten und lokalisieren Sie an den Rändern—UI, E-Mails, Reports.
Negative Stempel und ferne Zukunft
Zeitstempel vor 1970 sind auf unterstützenden Systemen negativ. Weit entfernte Daten können 32-Bit-signed Integer überlaufen: das klassische Jahr-2038-Problem für time_t auf 32-Bit-Plattformen. Modernes 64-Bit-time_t verschiebt den Überlauf für Sekundenauflösung weit hinaus. Bevorzugen Sie 64-Bit-Typen in neuen Systemen.
Schaltsekunden (Bewusstsein)
UTC fügt gelegentlich Schaltsekunden ein. POSIX-Unix-Zeit ignoriert sie typischerweise und behandelt jeden Tag als 86 400 Sekunden. Für Alltagsgeschäftsanwendungen reicht das. Für Astronomie, Telekom oder rechtliche Zeitstempelung über Schaltereignisse hinweg die Zeitskala Ihrer Branche (UTC, TAI, GPS-Zeit) und Bibliotheksunterstützung prüfen.
ISO 8601 neben Unix-Zeit
APIs akzeptieren oft beides:
17100000002024-03-09T16:00:00Z
ISO-8601-Strings mit Z oder numerischem Offset beschreiben denselben Instant bei korrektem Parsing. Unix-Zeit ist kompakt; ISO-Strings sind in Logs greppbar. Viele Systeme speichern Integer und emittieren ISO in JSON.
Konvertierungsablauf
- Einheit (s/ms) identifizieren.
- Zahl als UTC-Epoche interpretieren.
- Mit expliziter Zone für die Anzeige formatieren.
- Round-Trip: formatieren und parsen oder zurück zur Epoche, um Übereinstimmung zu prüfen.
Handkonversion ohne Bibliothek ist fehleranfällig bei Monatslängen und Schaltjahren—für Produktion getestete Libraries nutzen.
Datenbanken und Indexierung
Epoch-Integer oder native Timestamp-Typen speichern, die auf UTC normalisieren. Lokale Zivilzeit ohne Zone vermeiden, wenn ein Instant gemeint ist. Integer-Epochen zu indizieren ist einfach; die Einheit in Schema-Kommentaren dokumentieren.
Für „Geschäftsdaten“ wie Rechnungs-Kalendertage kann ein Datumstyp ohne Uhrzeit besser sein als Epoche um Mitternacht—Politik und Jurisdiktion bestimmen, was „der Tag“ bedeutet.
Logging und Observability
Log-Prozessoren lieben Unix-Zeit. Traces über Dienste hinweg möglichst in derselben Uhrdomäne korrelieren. Clock-Skew zwischen Hosts bleibt—NTP hilft—kleine Negative in Dauerrechnungen tolerieren und serverseitige Stempel für autoritative Audit-Trails bevorzugen.
Häufige Fehler
- Einheiten-Mismatch (Sekunden vs. Millisekunden).
- Epoche als lokal behandeln beim Formatieren ohne
Z. - String-Mathematik auf Datumsstrings statt Instants.
- Excel wandelt Stempel mit falscher Epoche um (Excel-Tag-Null weicht ab).
- 32-Bit-Überlauf auf Embedded- oder Legacy-Systemen.
Lehrbeispiel
Einen Stempel nehmen, nach UTC konvertieren, dann in zwei Zivilzeitzonen. Bestätigen, dass beide Zivilstrings denselben Instant meinen. Das baut Intuition besser als Formeln auswendig zu lernen.
Nutzen Sie from-unix-timestamp-to-date, um Werte aus APIs oder Datenbank-Dumps zu inspizieren (nicht-sensible Samples).
Verwandte Konzepte
- Monotone Uhren messen verstrichene Zeit und sollten nicht rückwärts laufen; sie sind keine Unix-Zeitstempel und sollten nicht als Wandzeit persistiert werden.
- Cron-Ausdrücke beschreiben zivile Zeitpläne, keine Epochen.
- Zertifikat-
notAfter-Felder sind Instants—in UTC vergleichen.
Zusammenfassung
Unix-Zeitstempel kodieren Instants als Zähler ab 1970-01-01 UTC. Sie vereinfachen Speicherung und Sortierung und verschieben die menschliche Formatierung an die Ränder. Einheiten kennen, 64-Bit-Typen nutzen, mit expliziten Zonen anzeigen und mit zuverlässigen Tools konvertieren, wenn eine Rohzahl als Kalenderdatum gelesen werden soll.