← Alle Beiträge

Unix-Zeit vs. POSIX-Zeit vs. Epoch-Zeitstempel: Terminologie erklärt

"Epoch-Zeitstempel", "Unix-Zeit" und "POSIX-Zeit" werden synonym verwendet, und im Alltagscode sind sie dieselbe Zahl — Sekunden seit 1970-01-01 UTC. Sie stammen aber aus verschiedenen Quellen: Unix-Zeit ist Konvention, POSIX-Zeit ist eine formale Spezifikation (IEEE Std 1003.1), und "Epoch" ist ein Oberbegriff für jeden Referenzzeitpunkt. Dieser Leitfaden ordnet jeden Begriff seinem Standard zu und zeigt, wo die Unterschiede — Schaltsekunden, Bereich und andere Epochs — tatsächlich zählen.

Unix-Zeit, POSIX-Zeit, Epoch-Zeitstempel: die kurze Antwort

Im Alltagscode bedeuten die drei Begriffe dieselbe Zahl: Sekunden seit 1970-01-01 00:00:00 UTC. Der Unterschied liegt in ihrer Herkunft. "Unix-Zeit" ist eine Konvention aus dem frühen Unix und der C-Bibliothek. "POSIX-Zeit" ist derselbe Zählwert, festgehalten als formaler Standard (IEEE Std 1003.1), der jeden Tag auf genau 86.400 Sekunden fixiert. "Epoch-Zeitstempel" ist der allgemeinste der drei — eine "Epoch" ist einfach ein fester Referenzzeitpunkt, und obwohl damit fast immer die Unix-Epoch von 1970 gemeint ist, zählen andere Systeme (NTP, GPS, Windows) ab anderen Epochs. Die Tabelle unten ordnet jeden Begriff seinem Standard zu und zeigt, wie er Schaltsekunden behandelt.

BegriffZähltDefiniert durchSchaltsekundenHinweise
Unix-ZeitSekunden seit 1970-01-01 00:00:00 UTCKonvention (Unix / C-Bibliothek)IgnoriertDer alltägliche Entwicklername
POSIX-ZeitSekunden seit der Epoch, per fester FormelIEEE Std 1003.1 §4.16Ignoriert — jeder Tag hat genau 86.400 sDie formal spezifizierte Version der Unix-Zeit
Epoch-ZeitstempelZählwert ab einer festen Epoch (meist die Unix-Epoch)Allgemeiner Begriff — die Epoch variiertHängt von Epoch/System ab"Epoch" ist der Referenzzeitpunkt, nicht immer 1970
Epoch-MillisekundenMillisekunden seit 1970-01-01 UTCGleiche Epoch, feinere EinheitIgnoriertHeute 13 Stellen; Standard in JavaScript und Java

Was ist ein Epoch-Zeitstempel?

Ein Epoch-Zeitstempel ist ein numerischer Zählwert, gemessen ab einem festen Referenzmoment namens Epoch. Im Entwickleralltag bedeutet Epoch-Zeitstempel meist Unix-Zeitstempel: die Anzahl der Sekunden seit dem 1. Januar 1970 um 00:00:00 UTC. Ein Wert von 0 bedeutet die exakte Unix-Epoch. Positive Werte liegen nach 1970; negative davor. Das entscheidende Wort ist "Epoch" — es benennt den Startzeitpunkt, und alles andere ist nur Zählen ab dort. Für die schlichte Definition und die Bedeutung von Zeitstempel null siehe Epoch-Zeit erklärt; dieser Artikel konzentriert sich darauf, wie die drei konkurrierenden Namen zusammenhängen.

Unix-Zeit vs. POSIX-Zeit: was der Standard sagt

Unix-Zeit und POSIX-Zeit bezeichnen denselben Zählwert, aber nur POSIX-Zeit ist formal spezifiziert. IEEE Std 1003.1 — der POSIX-Standard — definiert "Seconds Since the Epoch" mit einer expliziten Formel, die ein UTC-Kalenderdatum in eine einzige Ganzzahl umwandelt. Die entscheidende Eigenschaft dieser Formel ist, dass sie jeden Tag als genau 86.400 Sekunden behandelt (60 × 60 × 24). Das ist eine bewusste Vereinfachung: Sie ignoriert Schaltsekunden und tauscht astronomische Genauigkeit gegen einen Wert, der trivial zu berechnen, zu sortieren und zu speichern ist. "Unix-Zeit" ist der umgangssprachliche Name für dieselbe Größe und ist älter als der Standard; "POSIX-Zeit" zitierst du, wenn du die präzise Definition brauchst.

  • POSIX-Formel: ein UTC-Datum bildet auf eine Ganzzahl ab, jeder Tag fest auf 86.400 Sekunden
  • Folge: ein Unix-/POSIX-Zeitstempel folgt der UTC, zählt aber nie die eingefügten Schaltsekunden
  • time_t ist der C-Typ, der ihn hält — früher signed 32-Bit, heute meist signed 64-Bit
  • Gleicher Zeitpunkt → gleicher Wert auf jedem konformen System, unabhängig von Zeitzone oder Locale

Unterscheiden sich Unix-Zeit und POSIX-Zeit jemals wirklich?

Für fast alle Software nicht — sie sind dieselbe Zahl, und du kannst die Begriffe synonym verwenden. Die Unterschiede tauchen nur an der Grenze zwischen bürgerlicher Zeit und Physik auf. Da beide Schaltsekunden ignorieren, ist ein Unix-/POSIX-Zeitstempel kein echter Zählwert vergangener SI-Sekunden seit 1970: Er enthält nicht die 27 Schaltsekunden, die seit 1972 in die UTC eingefügt wurden. (TAI, eine kontinuierliche Atomzeitskala, läuft seit 2017 genau 37 Sekunden vor der UTC.) Rund um eine Schaltsekunde wiederholt oder überspringt eine POSIX-Uhr eine Sekunde, damit der Tag genau 86.400 Sekunden bleibt. Große Plattformen vermeiden diese Unstetigkeit mit Leap Smearing — der Verteilung der zusätzlichen Sekunde über einen ganzen Tag, sodass kein Zeitstempel jemals mehrdeutig ist. Wenn du hochpräzises Timing betreibst, über eine Schaltsekunde hinweg planst oder gegen GPS oder TAI vergleichst, hören "Unix" und "POSIX" auf, akademisch zu sein, und das Schaltsekundenmodell zählt.

Andere Epochs, denen du begegnest

"Epoch-Zeitstempel" bedeutet nur per Konvention "Unix-Zeitstempel". Eine Epoch ist einfach der Zeitpunkt, ab dem eine Uhr zählt, und mehrere weit verbreitete Systeme zählen ab einem anderen. Wenn ein Wert mit der Unix-Epoch nicht zu einem sinnvollen 2020er-Datum dekodiert, ist oft eine andere Epoch der Grund.

  • Unix-/POSIX-Epoch — 1970-01-01 UTC; Sekunden (oder ms/µs). Fast überall der Standard
  • NTP-Epoch — 1900-01-01 UTC; verwendet vom Network Time Protocol (RFC 5905)
  • GPS-Epoch — 1980-01-06; GPS-Zeit hat keine Schaltsekunden und ist der UTC daher vorausgedriftet (18 Sekunden Stand 2026)
  • Windows FILETIME — 1601-01-01 UTC, gezählt in 100-Nanosekunden-Intervallen
  • JavaScript / Java — die Unix-Epoch, aber in Millisekunden, weshalb diese Werte 13 Stellen haben

Warum Zeitstempel seit 1970 zum Standard wurde

Die Unix-Epoch war für frühe Unix-Systeme praktisch und wurde zur Konvention, als sich Unix-Ideen in C-Bibliotheken, Linux, Datenbanken, Webserver und Programmiersprachen verbreiteten. Ein einzelner numerischer Zeitstempel ist leichter zu sortieren, zu vergleichen, zu übertragen und zu speichern als eine lokalisierte Datumszeichenkette. Als die C-Bibliothek und dann POSIX den Zählwert standardisierten, war 1970 im gesamten Ökosystem festgeschrieben — weshalb ein auf einer Plattform erzeugter Wert auf jeder anderen identisch dekodiert.

Beispiele für Epoch-Zeitstempel

Ein paar bekannte Werte machen die Definition leichter merkbar.

  • 0 = 1970-01-01 00:00:00 UTC
  • 1 = 1970-01-01 00:00:01 UTC
  • 86400 = 1970-01-02 00:00:00 UTC
  • 1700000000 = 2023-11-14 22:13:20 UTC
  • 1767225600 = 2026-01-01 00:00:00 UTC

Verwandte Artikel

FAQ

Ist Epoch-Zeit dasselbe wie Unix-Zeit?
Im gängigen Entwickleralltag ja. Epoch-Zeit bedeutet meist Unix-Zeit: vergangene Sekunden seit 1970-01-01 00:00:00 UTC.
Wie ist Unix-Zeit definiert?
Unix-Zeit ist definiert als Sekunden seit 1970-01-01 00:00:00 UTC, ohne Schaltsekunden zu zählen.
Was ist POSIX-Zeit?
POSIX-Zeit ist die formal spezifizierte Version der Unix-Zeit. IEEE Std 1003.1 ("Seconds Since the Epoch") gibt eine exakte Formel an, die Sekunden seit 1970-01-01 00:00:00 UTC zählt und jeden Tag als genau 86.400 Sekunden behandelt.
Warum ignoriert POSIX-Zeit Schaltsekunden?
Mit Absicht. Die POSIX-Formel fixiert einen Tag auf genau 86.400 Sekunden, damit der Wert einfach zu berechnen und zu speichern ist. Dadurch folgt ein Unix-/POSIX-Zeitstempel der UTC, repräsentiert aber nicht die eingefügten Schaltsekunden.
Ist ein POSIX-Zeitstempel zeitzonenbewusst?
Nein. Ein POSIX-Zeitstempel steht für einen Zeitpunkt. Zeitzonen werden erst beim Formatieren dieses Zeitpunkts als lesbares Datum angewendet.
Sind Epoch-Zeitstempel unter Windows, Linux und macOS gleich?
Die Unix-Epoch (1970-01-01 00:00:00 UTC) ist auf modernen Plattformen und in modernen Sprachen identisch, sodass derselbe Zeitpunkt überall denselben Unix-Zeitstempel ergibt. Windows verwendet intern seine eigene FILETIME-Epoch (1601), aber Standard-Unix- und POSIX-Zeitstempel nutzen 1970.