Excel Date Converter

Conversor de Excel OADate para timestamp Unix

Converta Excel OADate em tempo Unix com a fórmula exata e suporte para valores grandes. Saída em segundos, milissegundos, ISO 8601 e formato legível.

dias desde 30-12-1899

Hora atual — Data serial Excel / OADate
Timestamp Unix (s)

O que é um número de série de data do Excel?

O Excel armazena datas como números de série: a parte inteira é o número de dias desde a época do sistema e a parte fracionária é a hora do dia. No sistema de datas 1900 padrão, o número de série 1 é 1º de janeiro de 1900. O OLE Automation Date (OADate) usado pelo .NET e pelo COM emprega a mesma contagem de dias, mas conta a partir de 30 de dezembro de 1899.

  • Dia 0 (OADate) = 1899-12-30; número de série 1 do Excel = 1900-01-01
  • Parte inteira = dias, parte fracionária = fração de um dia de 24 horas
  • Exemplo: 45244.92592593 → 2023-11-14 22:13:20
  • OADate é produzido por DateTime.ToOADate() no .NET

Como converter uma data do Excel em tempo Unix

Há 25.569 dias entre a origem do Excel/OADate (1899-12-30) e a época Unix (1970-01-01). Subtraia isso e multiplique pelo número de segundos em um dia.

  • Unix seconds = (ExcelSerial − 25569) × 86400
  • Unix milliseconds = (ExcelSerial − 25569) × 86400000
  • Inverso: ExcelSerial = Unix seconds / 86400 + 25569
  • Este conversor trata a entrada como um valor de relógio de parede em UTC

O bug do ano bissexto de 1900

Por compatibilidade com o Lotus 1-2-3, o Excel trata erroneamente 1900 como ano bissexto e inclui um 29 de fevereiro de 1900 inexistente (série 60). Para qualquer data em ou após 1º de março de 1900, o deslocamento padrão de 25.569 está correto; apenas séries de 60 ou menos são afetadas. A maioria dos dados reais cai bem depois disso, então o bug raramente importa na prática — mas é por isso que o deslocamento é 25.569 e não 25.568.

  • Série 60 = o fantasma 1900-02-29; série 61 = 1900-03-01
  • Datas anteriores a 1900-03-01 ficam deslocadas em um dia no sistema 1900
  • O sistema de datas 1904 (Excel antigo do Mac) conta a partir de 1904-01-01

Conversores de formato de marca de tempo relacionados

Outros sistemas de datas de planilhas

O sistema 1900 do Excel é o mais comum, mas não o único:

  • O sistema de datas 1904 do Excel (padrão antigo do Mac) usa 1904-01-01 como dia 0; o deslocamento para Unix é 24107
  • O Google Sheets segue o sistema 1900 (deslocamento 25569) por compatibilidade
  • O LibreOffice Calc suporta tanto a origem 1899-12-30 quanto 1900-01-01 via configuração
  • Power Query: Number.From(DateTime.FromText(...)) retorna dias desde 1899-12-30 (sistema 1900)
  • Dentro de um .xlsx, o XML subjacente armazena ISO 8601 — o Excel converte de/para o número de série na leitura

FAQ

Como converto uma data serial do Excel em uma marca de tempo Unix?
Subtraia 25.569 (os dias entre 1899-12-30 e 1970-01-01) e multiplique por 86.400 para obter segundos Unix.
O que é um OADate?
Uma OLE Automation Date é uma contagem de dias em ponto flutuante a partir de 30 de dezembro de 1899, usada por .NET (DateTime.ToOADate) e COM. Corresponde às datas seriais do Excel para todas as datas modernas.
Por que o deslocamento do Excel é 25569 e não 25568?
O bug do ano bissexto de 1900 do Excel insere um 29 de fevereiro de 1900 falso, adicionando um dia à contagem para qualquer data posterior, o que torna 25.569 o deslocamento correto para datas modernas.