Mac Absolute Time

Convertidor de Mac Absolute Time a timestamp Unix

Convierte Mac Absolute Time a tiempo Unix con la fórmula exacta y soporte para valores grandes. Salida en segundos, milisegundos, ISO 8601 y formato legible.

segundos desde el 01-01-2001 UTC

Hora actual — Mac Absolute Time (CFAbsoluteTime)
Timestamp Unix (s)

¿Qué es Mac Absolute Time?

El Core Foundation de Apple mide el tiempo como CFAbsoluteTime: un recuento de doble precisión de segundos desde la fecha de referencia del 1 de enero de 2001 00:00:00 UTC. Este «Mac absolute time» aparece por todo macOS e iOS, incluidos los archivos plist, el sistema de registro unificado y muchas API de Cocoa.

  • Época: 2001-01-01 00:00:00 UTC (la fecha de referencia de Cocoa/Core Foundation)
  • Tipo: segundos en coma flotante, así que los valores fraccionarios llevan precisión por debajo del segundo
  • Un valor actual ronda 7,4 × 10^8 (menor que la marca de tiempo Unix equivalente)
  • Se ve en: CFAbsoluteTimeGetCurrent(), NSDate timeIntervalSinceReferenceDate, valores Date de plist

Cómo convertir Mac Absolute Time a tiempo Unix

Hay 978.307.200 segundos entre la época Unix (1970) y la época de Apple (2001). Suma ese desfase para convertir segundos de Apple en segundos Unix.

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

Formatos de Apple relacionados

Core Data guarda las fechas como el mismo valor CFAbsoluteTime, así que el conversor de marca de tiempo de Core Data usa el mismo cálculo. Ten cuidado con valores que parecen marcas de tiempo Unix — un valor basado en 2001 aparecerá ~31 años demasiado pronto si olvidas el desfase.

  • Core Data SQLite almacena las columnas ZDATE como segundos desde 2001
  • Un valor a secas cercano a 7×10^8 es casi seguro tiempo de Apple, no tiempo Unix
  • Algunos valores de APNs y de registros usan la misma fecha de referencia

Conversores de formato de marca de tiempo relacionados

Otros tipos de tiempo de la plataforma Apple

CFAbsoluteTime es la referencia canónica de Apple, pero tipos relacionados aparecen en los frameworks de Apple:

  • NSDate tiene el mismo timeIntervalSinceReferenceDate subyacente (segundos desde 2001)
  • NSTimeInterval es el typedef para un valor de segundos en doble precisión (no siempre época de Apple — depende del contexto)
  • Los elementos <date> de plist se escriben como cadenas ISO 8601, no como CFAbsoluteTime en bruto — conviértelos antes de persistir
  • Las marcas de tiempo del registro unificado de iOS y los eventos de Core Telephony suelen usar CFAbsoluteTime
  • La salida de macOS log show imprime horas locales por defecto; las marcas de tiempo de eventos en bruto siguen siendo UTC

FAQ

¿Qué es el epoch de CFAbsoluteTime?
CFAbsoluteTime cuenta segundos desde el 1 de enero de 2001 00:00:00 UTC, la fecha de referencia de Core Foundation/Cocoa.
¿Cómo convierto el tiempo absoluto de Mac a tiempo Unix?
Suma 978 307 200 segundos al tiempo absoluto de Mac para obtener una marca de tiempo Unix en segundos.
¿El tiempo absoluto de Mac es lo mismo que las marcas de tiempo de Core Data?
Sí. Core Data almacena las fechas como CFAbsoluteTime (segundos desde 2001), por lo que la conversión es idéntica.