Excel Date Converter

Convertitore da Excel OADate a timestamp Unix

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

giorni dal 30-12-1899

Ora corrente — Data seriale Excel / OADate
Timestamp Unix (s)

Che cos'è un numero seriale di data di Excel?

Excel memorizza le date come numeri seriali: la parte intera è il numero di giorni dall'epoca del sistema e la parte frazionaria è l'ora del giorno. Nel sistema di date 1900 predefinito, il numero seriale 1 è il 1° gennaio 1900. L'OLE Automation Date (OADate) usato da .NET e COM impiega lo stesso conteggio di giorni ma conta dal 30 dicembre 1899.

  • Giorno 0 (OADate) = 1899-12-30; numero seriale Excel 1 = 1900-01-01
  • Parte intera = giorni, parte frazionaria = frazione di un giorno di 24 ore
  • Esempio: 45244.92592593 → 2023-11-14 22:13:20
  • OADate è prodotto da DateTime.ToOADate() in .NET

Come convertire una data di Excel in tempo Unix

Ci sono 25.569 giorni tra l'origine Excel/OADate (1899-12-30) e l'epoca Unix (1970-01-01). Sottraili e moltiplica per il numero di secondi in un giorno.

  • Unix seconds = (ExcelSerial − 25569) × 86400
  • Unix milliseconds = (ExcelSerial − 25569) × 86400000
  • Inverso: ExcelSerial = Unix seconds / 86400 + 25569
  • Questo convertitore tratta l'input come un valore dell'orologio in UTC

Il bug dell'anno bisestile del 1900

Per compatibilità all'indietro con Lotus 1-2-3, Excel tratta erroneamente il 1900 come anno bisestile e include un 29 febbraio 1900 inesistente (seriale 60). Per qualsiasi data dal 1° marzo 1900 in poi l'offset standard di 25.569 è corretto; sono interessati solo i seriali di 60 o inferiori. La maggior parte dei dati reali cade ben dopo, quindi il bug raramente conta nella pratica — ma è il motivo per cui l'offset è 25.569 e non 25.568.

  • Seriale 60 = il fantasma 1900-02-29; seriale 61 = 1900-03-01
  • Le date prima del 1900-03-01 sono spostate di un giorno nel sistema 1900
  • Il sistema di date 1904 (vecchio Excel per Mac) conta invece dal 1904-01-01

Convertitori di formato timestamp correlati

Altri sistemi di date dei fogli di calcolo

Il sistema 1900 di Excel è il più comune ma non l'unico:

  • Il sistema di date 1904 di Excel (vecchio predefinito Mac) usa 1904-01-01 come giorno 0; l'offset verso Unix è 24107
  • Google Sheets segue il sistema 1900 (offset 25569) per compatibilità
  • LibreOffice Calc supporta sia l'origine 1899-12-30 sia 1900-01-01 tramite configurazione
  • Power Query: Number.From(DateTime.FromText(...)) restituisce i giorni dal 1899-12-30 (sistema 1900)
  • Dentro un .xlsx l'XML sottostante memorizza ISO 8601 — Excel converte da/verso il seriale in lettura

FAQ

Come converto una data seriale di Excel in un timestamp Unix?
Sottrai 25.569 (i giorni tra 1899-12-30 e 1970-01-01) e moltiplica per 86.400 per ottenere secondi Unix.
Cos'è un OADate?
Una OLE Automation Date è un conteggio di giorni in virgola mobile dal 30 dicembre 1899, usato da .NET (DateTime.ToOADate) e COM. Corrisponde alle date seriali di Excel per tutte le date moderne.
Perché l'offset di Excel è 25569 e non 25568?
Il bug dell'anno bisestile 1900 di Excel inserisce un falso 29 febbraio 1900, aggiungendo un giorno al conteggio per qualsiasi data successiva, il che rende 25.569 l'offset corretto per le date moderne.