Convertisseur Mac Absolute Time vers timestamp Unix
Convertissez Mac Absolute Time en temps Unix avec la formule exacte et la prise en charge des grandes valeurs. Sortie en secondes, millisecondes, ISO 8601 et format lisible.
secondes depuis le 01-01-2001 UTC
Qu'est-ce que le Mac Absolute Time ?
Le Core Foundation d'Apple mesure le temps comme CFAbsoluteTime : un décompte en double précision des secondes depuis la date de référence du 1er janvier 2001 00:00:00 UTC. Ce « Mac absolute time » apparaît partout dans macOS et iOS, notamment dans les fichiers plist, le système de journalisation unifiée et de nombreuses API Cocoa.
- Époque : 2001-01-01 00:00:00 UTC (la date de référence de Cocoa/Core Foundation)
- Type : secondes en virgule flottante, donc les valeurs fractionnaires portent une précision infra-seconde
- Une valeur actuelle vaut environ 7,4 × 10^8 (plus petite que l'horodatage Unix équivalent)
- Présent dans : CFAbsoluteTimeGetCurrent(), NSDate timeIntervalSinceReferenceDate, valeurs Date des plist
Comment convertir le Mac Absolute Time en temps Unix
Il y a 978 307 200 secondes entre l'époque Unix (1970) et l'époque Apple (2001). Ajoutez ce décalage pour convertir des secondes Apple en secondes Unix.
- Unix seconds = MacAbsoluteTime + 978307200
- Exemple : 721692800 → 1700000000 → 2023-11-14 22:13:20 UTC
- Inverse : MacAbsoluteTime = Unix seconds − 978307200
- Swift : Date(timeIntervalSinceReferenceDate: t).timeIntervalSince1970
Formats Apple associés
Core Data persiste les dates sous la même valeur CFAbsoluteTime, donc le convertisseur d'horodatage Core Data utilise le même calcul. Méfiez-vous des valeurs qui ressemblent à des horodatages Unix — une valeur basée sur 2001 paraîtra ~31 ans trop tôt si vous oubliez le décalage.
- Core Data SQLite stocke les colonnes ZDATE en secondes depuis 2001
- Une valeur nue proche de 7×10^8 est presque sûrement du temps Apple, pas du temps Unix
- Certaines valeurs APNs et de journaux utilisent la même date de référence
Convertisseurs de format d'horodatage associés
Autres types de temps de la plateforme Apple
CFAbsoluteTime est la référence Apple canonique, mais des types associés apparaissent dans les frameworks Apple :
- NSDate a le même timeIntervalSinceReferenceDate sous-jacent (secondes depuis 2001)
- NSTimeInterval est le typedef d'une valeur de secondes en double précision (pas toujours l'époque Apple — selon le contexte)
- Les éléments <date> des plist sont écrits en chaînes ISO 8601, pas en CFAbsoluteTime brut — convertissez avant de persister
- Les horodatages de la journalisation unifiée iOS et les événements Core Telephony utilisent généralement CFAbsoluteTime
- La sortie de macOS log show affiche les heures locales par défaut ; les horodatages d'événements bruts restent en UTC
FAQ
- Qu'est-ce que l'epoch CFAbsoluteTime ?
- CFAbsoluteTime compte des secondes depuis le 1er janvier 2001 00:00:00 UTC, la date de référence de Core Foundation/Cocoa.
- Comment convertir le temps absolu Mac en temps Unix ?
- Ajoutez 978 307 200 secondes au temps absolu Mac pour obtenir un horodatage Unix en secondes.
- Le temps absolu Mac est-il identique aux horodatages Core Data ?
- Oui. Core Data stocke les dates en CFAbsoluteTime (secondes depuis 2001), donc la conversion est identique.