Mac Absolute Time

Convertitore da Mac Absolute Time a timestamp Unix

Converti Mac Absolute Time in tempo Unix con la formula esatta e supporto per valori grandi. Output in secondi, millisecondi, ISO 8601 e formato leggibile.

secondi dal 01-01-2001 UTC

Ora corrente — Mac Absolute Time (CFAbsoluteTime)
Timestamp Unix (s)

Che cos'è il Mac Absolute Time?

Il Core Foundation di Apple misura il tempo come CFAbsoluteTime: un conteggio in doppia precisione dei secondi dalla data di riferimento del 1° gennaio 2001 00:00:00 UTC. Questo «Mac absolute time» compare in tutto macOS e iOS, inclusi i file plist, il sistema di logging unificato e molte API Cocoa.

  • Epoca: 2001-01-01 00:00:00 UTC (la data di riferimento di Cocoa/Core Foundation)
  • Tipo: secondi in virgola mobile, quindi i valori frazionari portano precisione sotto il secondo
  • Un valore attuale è circa 7,4 × 10^8 (più piccolo del timestamp Unix equivalente)
  • Si trova in: CFAbsoluteTimeGetCurrent(), NSDate timeIntervalSinceReferenceDate, valori Date dei plist

Come convertire il Mac Absolute Time in tempo Unix

Ci sono 978.307.200 secondi tra l'epoca Unix (1970) e l'epoca Apple (2001). Aggiungi quell'offset per convertire i secondi Apple in secondi Unix.

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

Formati Apple correlati

Core Data salva le date come lo stesso valore CFAbsoluteTime, quindi il convertitore di timestamp Core Data usa lo stesso calcolo. Attenzione ai valori che sembrano timestamp Unix — un valore basato sul 2001 apparirà ~31 anni troppo presto se dimentichi l'offset.

  • Core Data SQLite memorizza le colonne ZDATE come secondi dal 2001
  • Un valore nudo vicino a 7×10^8 è quasi certamente tempo Apple, non tempo Unix
  • Alcuni valori APNs e di log usano la stessa data di riferimento

Convertitori di formato timestamp correlati

Altri tipi di tempo della piattaforma Apple

CFAbsoluteTime è il riferimento canonico di Apple, ma tipi correlati compaiono nei framework Apple:

  • NSDate ha lo stesso timeIntervalSinceReferenceDate sottostante (secondi dal 2001)
  • NSTimeInterval è il typedef per un valore di secondi in doppia precisione (non sempre epoca Apple — dipende dal contesto)
  • Gli elementi <date> dei plist sono scritti come stringhe ISO 8601, non come CFAbsoluteTime grezzo — convertili prima di persistere
  • I timestamp del logging unificato di iOS e gli eventi di Core Telephony usano in genere CFAbsoluteTime
  • L'output di macOS log show stampa gli orari locali per impostazione predefinita; i timestamp grezzi degli eventi restano UTC

FAQ

Cos'è l'epoch di CFAbsoluteTime?
CFAbsoluteTime conta i secondi dal 1° gennaio 2001 00:00:00 UTC, la data di riferimento di Core Foundation/Cocoa.
Come converto il tempo assoluto Mac in tempo Unix?
Aggiungi 978.307.200 secondi al tempo assoluto Mac per ottenere un timestamp Unix in secondi.
Il tempo assoluto Mac è lo stesso dei timestamp di Core Data?
Sì. Core Data memorizza le date come CFAbsoluteTime (secondi dal 2001), quindi la conversione è identica.