Mac Absolute Time

Mac Absolute Time zu Unix-Timestamp-Konverter

Wandle Mac Absolute Time in Unix-Zeit um — mit exakter Formel und Unterstützung großer Werte. Ausgabe in Sekunden, Millisekunden, ISO 8601 und lesbarem Format.

Sekunden seit 01.01.2001 UTC

Aktuelle Zeit — Mac Absolute Time (CFAbsoluteTime)
Unix-Timestamp (s)

Was ist Mac Absolute Time?

Apples Core Foundation misst die Zeit als CFAbsoluteTime: eine Doppelgenauigkeits-Zählung der Sekunden seit dem Referenzdatum 1. Januar 2001 00:00:00 UTC. Diese „Mac Absolute Time“ taucht in macOS und iOS überall auf, u. a. in plist-Dateien, im Unified-Logging-System und in vielen Cocoa-APIs.

  • Epoche: 2001-01-01 00:00:00 UTC (das Referenzdatum von Cocoa/Core Foundation)
  • Typ: Gleitkomma-Sekunden, daher tragen Nachkommastellen Sub-Sekunden-Präzision
  • Ein heutiger Wert liegt bei etwa 7,4 × 10^8 (kleiner als der entsprechende Unix-Zeitstempel)
  • Zu finden in: CFAbsoluteTimeGetCurrent(), NSDate timeIntervalSinceReferenceDate, plist-Date-Werten

Mac Absolute Time in Unix-Zeit umwandeln

Zwischen der Unix-Epoche (1970) und der Apple-Epoche (2001) liegen 978.307.200 Sekunden. Addiere diesen Versatz, um Apple-Sekunden in Unix-Sekunden umzuwandeln.

  • Unix seconds = MacAbsoluteTime + 978307200
  • Beispiel: 721692800 → 1700000000 → 2023-11-14 22:13:20 UTC
  • Umgekehrt: MacAbsoluteTime = Unix seconds − 978307200
  • Swift: Date(timeIntervalSinceReferenceDate: t).timeIntervalSince1970

Verwandte Apple-Formate

Core Data speichert Daten als denselben CFAbsoluteTime-Wert, daher verwendet der Core-Data-Zeitstempel-Konverter dieselbe Rechnung. Sei vorsichtig bei Werten, die wie Unix-Zeitstempel aussehen — ein auf 2001 basierender Wert erscheint ~31 Jahre zu früh, wenn du den Versatz vergisst.

  • Core Data SQLite speichert ZDATE-Spalten als Sekunden seit 2001
  • Ein nackter Wert nahe 7×10^8 ist fast sicher Apple-Zeit, nicht Unix-Zeit
  • Einige APNs- und Log-Werte verwenden dasselbe Referenzdatum

Verwandte Zeitstempelformat-Konverter

Weitere Apple-Plattform-Zeittypen

CFAbsoluteTime ist die kanonische Apple-Referenz, aber verwandte Typen tauchen in Apple-Frameworks auf:

  • NSDate hat dasselbe zugrunde liegende timeIntervalSinceReferenceDate (Sekunden seit 2001)
  • NSTimeInterval ist der Typedef für einen Doppelgenauigkeits-Sekundenwert (nicht immer Apple-Epoche — kontextabhängig)
  • plist-<date>-Elemente werden als ISO-8601-Strings geschrieben, nicht als rohe CFAbsoluteTime — vor dem Speichern umwandeln
  • iOS-Unified-Logging-Zeitstempel und Core-Telephony-Ereignisse verwenden in der Regel CFAbsoluteTime
  • Die Ausgabe von macOS log show gibt standardmäßig lokale Zeiten aus; die rohen Ereigniszeitstempel bleiben UTC

FAQ

Was ist die CFAbsoluteTime-Epoch?
CFAbsoluteTime zählt Sekunden seit dem 1. Januar 2001 00:00:00 UTC, dem Core-Foundation-/Cocoa-Bezugsdatum.
Wie wandle ich die Mac-Absolutzeit in Unix-Zeit um?
Addiere 978.307.200 Sekunden zur Mac-Absolutzeit, um einen Unix-Zeitstempel in Sekunden zu erhalten.
Ist die Mac-Absolutzeit dasselbe wie Core-Data-Zeitstempel?
Ja. Core Data speichert Daten als CFAbsoluteTime (Sekunden seit 2001), sodass die Umrechnung identisch ist.