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
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.