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
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.