Convertidor de Excel OADate a timestamp Unix
Convierte Excel OADate a tiempo Unix con la fórmula exacta y soporte para valores grandes. Salida en segundos, milisegundos, ISO 8601 y formato legible.
días desde el 30-12-1899
¿Qué es un número de serie de fecha de Excel?
Excel almacena las fechas como números de serie: la parte entera es el número de días desde la época del sistema y la parte fraccionaria es la hora del día. En el sistema de fechas 1900 predeterminado, el número de serie 1 es el 1 de enero de 1900. El OLE Automation Date (OADate) que usan .NET y COM emplea el mismo recuento de días pero cuenta desde el 30 de diciembre de 1899.
- Día 0 (OADate) = 1899-12-30; número de serie 1 de Excel = 1900-01-01
- Parte entera = días, parte fraccionaria = fracción de un día de 24 horas
- Ejemplo: 45244.92592593 → 2023-11-14 22:13:20
- OADate lo produce DateTime.ToOADate() en .NET
Cómo convertir una fecha de Excel a tiempo Unix
Hay 25.569 días entre el origen de Excel/OADate (1899-12-30) y la época Unix (1970-01-01). Réstalo y multiplica por el número de segundos de un día.
- Unix seconds = (ExcelSerial − 25569) × 86400
- Unix milliseconds = (ExcelSerial − 25569) × 86400000
- Inverso: ExcelSerial = Unix seconds / 86400 + 25569
- Este conversor trata la entrada como un valor de reloj de pared en UTC
El bug del año bisiesto de 1900
Por compatibilidad con Lotus 1-2-3, Excel trata erróneamente 1900 como año bisiesto e incluye un 29 de febrero de 1900 inexistente (serie 60). Para cualquier fecha igual o posterior al 1 de marzo de 1900 el desfase estándar de 25.569 es correcto; solo se ven afectados los números de serie de 60 o menos. La mayoría de los datos reales caen muy después de esto, así que el bug rara vez importa en la práctica — pero es la razón de que el desfase sea 25.569 y no 25.568.
- Serie 60 = el fantasma 1900-02-29; serie 61 = 1900-03-01
- Las fechas anteriores al 1900-03-01 están desfasadas un día en el sistema 1900
- El sistema de fechas 1904 (Excel de Mac antiguo) cuenta desde 1904-01-01 en su lugar
Conversores de formato de marca de tiempo relacionados
Otros sistemas de fechas de hojas de cálculo
El sistema 1900 de Excel es el más común pero no el único:
- El sistema de fechas 1904 de Excel (predeterminado antiguo de Mac) usa 1904-01-01 como día 0; el desfase a Unix es 24107
- Google Sheets coincide con el sistema 1900 (desfase 25569) por compatibilidad
- LibreOffice Calc admite tanto el origen 1899-12-30 como 1900-01-01 mediante configuración
- Power Query: Number.From(DateTime.FromText(...)) devuelve días desde 1899-12-30 (sistema 1900)
- Dentro de un .xlsx, el XML subyacente almacena ISO 8601 — Excel convierte a/desde el número de serie al leer
FAQ
- ¿Cómo convierto una fecha de serie de Excel a una marca de tiempo Unix?
- Resta 25 569 (los días entre 1899-12-30 y 1970-01-01) y multiplica por 86 400 para obtener segundos Unix.
- ¿Qué es un OADate?
- Una fecha de automatización OLE es un recuento de días en coma flotante desde el 30 de diciembre de 1899, usado por .NET (DateTime.ToOADate) y COM. Coincide con las fechas de serie de Excel para todas las fechas modernas.
- ¿Por qué el desfase de Excel es 25569 y no 25568?
- El error del año bisiesto de 1900 de Excel inserta un 29 de febrero de 1900 falso, añadiendo un día al recuento para cualquier fecha posterior, lo que hace que 25 569 sea el desfase correcto para las fechas modernas.