Tutorial
Como processar carimbos de data/hora do Excel
Introdução
O Excel armazena datas como números de série que representam o número de dias desde 1º de janeiro de 1900 (ou 1º de janeiro de 1904 no Mac). Compreender como o Excel lida com carimbos de data/hora é essencial para migração de dados, integração de API e trabalho com análises baseadas em datas. Este guia aborda técnicas de conversão, cálculos e práticas recomendadas.
Compreendendo o sistema de datas do Excel
Como o Excel armazena datas
O Excel usa dois sistemas de datas:
Sistema de Data 1900 (Windows - Padrão)
- Dia 1 = 1º de janeiro de 1900
- A fração decimal representa a hora do dia (por exemplo, 0,5 = meio-dia)
- Inclui um bug: o Excel trata 1900 como um ano bissexto (não era)
Sistema de data de 1904 (Mac)
- Dia 1 = 2 de janeiro de 1904
- Projetado para corrigir o bug do ano bissexto de 1900
- Usado por padrão em versões mais antigas do Excel para Mac
Importante: Sempre verifique qual sistema de data seu arquivo Excel usa antes de realizar conversões. Sistemas de datas mistos na mesma pasta de trabalho podem causar erros significativos.
Estrutura do número de série
Excel Date Number = Days since epoch + Fraction of day
Example: 44927.5
= 44927 (days since Jan 1, 1900)
+ 0.5 (half day = 12:00 PM)
= January 1, 2023, 12:00 PM
Conversões básicas
Data do Excel para carimbo de data/hora Unix
Método 1: Fórmula Excel
Converter a data serial do Excel em carimbo de data/hora Unix (segundos desde 01/01/1970):
excel
=(A1 - DATE(1970,1,1)) * 86400
Where:
A1 = Excel serial date (e.g., 44927.5)
DATE(1970,1,1) = Unix epoch in Excel (25569)
86400 = seconds per day
Dica profissional: Use intervalos nomeados para melhor legibilidade:
excel
> =EPOCH_DATE * 86400
>
```> Onde EPOCH_DATE é definido como 25569
### Método 2: Função Excel VBA
Crie uma função VBA reutilizável para conversões:
vba Function ExcelToUnix(excelDate As Double) As Long ' Convert Excel serial date to Unix timestamp Dim epochDate As Date epochDate = #1/1/1970# ExcelToUnix = (excelDate - epochDate) * 86400 End Function
### Método 3: Conversor Online
Use nossa ferramenta [Excel Timestamp Converter](/excel-timestamp) para conversões instantâneas sem fórmulas.
## Carimbo de data e hora Unix para data do Excel
### Método 1: Fórmula Excel
Converta o carimbo de data/hora Unix em data serial do Excel:
excel =(A1 / 86400) + DATE(1970,1,1)
Where: A1 = Unix timestamp in seconds 86400 = seconds per day DATE(1970,1,1) = Unix epoch in Excel (25569)
### Método 2: Função Excel VBA
vba Function UnixToExcel(unixTimestamp As Long) As Date ' Convert Unix timestamp to Excel date Dim epochDate As Date epochDate = #1/1/1970# UnixToExcel = (unixTimestamp / 86400) + epochDate End Function
## Cálculos de data
## Aritmética de Data
### Adicionando e subtraindo dias
excel ' Add 7 days to a date =A1 + 7
' Subtract 30 days from a date =A1 - 30
' Calculate days between two dates =B1 - A1
### Adicionando e Subtraindo Tempo
excel ' Add 4 hours to a datetime =A1 + (4/24)
' Add 30 minutes to a datetime =A1 + (30/1440)
' Add 45 seconds to a datetime =A1 + (45/86400)
' Where: 24 = hours per day 1440 = minutes per day 86400 = seconds per day
> **Prática recomendada:** Use referências de células para unidades de tempo para evitar codificação fixa:
>
excel
=A1 + (B1/86400)
### Cálculo de dias úteis
excel ' Calculate business days between two dates (excludes weekends) =NETWORKDAYS(A1, B1)
' Calculate business days excluding holidays =NETWORKDAYS(A1, B1, C1:C10)
> **Versão Internacional:** Use NETWORKDAYS.INTL para padrões personalizados de fim de semana:
>
excel
=NETWORKDAYS.INTL(A1, B1, 11)
## Funções de data do Excel
## Funções essenciais de data
### Data e hora atuais
excel ' Today's date (no time) =TODAY()
' Current date and time =NOW()
' Current time only =NOW() - TODAY()
' Extract time from datetime =MOD(A1, 1)
### Extraindo componentes de data
excel ' Extract year =YEAR(A1)
' Extract month number (1-12) =MONTH(A1)
' Extract day of month =DAY(A1)
' Extract hour (0-23) =HOUR(A1)
' Extract minute (0-59) =MINUTE(A1)
' Extract second (0-59) =SECOND(A1)
### Criando datas a partir de componentes
excel ' Create date from year, month, day =DATE(2023, 1, 15)
' Create time from hour, minute, second =TIME(14, 30, 0)
' Combine date and time =DATE(2023, 1, 15) + TIME(14, 30, 0)
### Trabalhando com dias da semana
excel ' Get day of week (1=Sunday, 7=Saturday) =WEEKDAY(A1)
' Get day of week name =TEXT(A1, "dddd")
' Get weekday name (3-letter abbreviation) =TEXT(A1, "ddd")
' ISO week number =ISOWEEKNUM(A1)
' Week number in year =WEEKNUM(A1)
## Operações avançadas de data
## Arredondamento e truncamento de data
### Truncar para início do período
excel ' Truncate to start of day (remove time) =INT(A1)
' Round to nearest hour =ROUND(A1*24, 0)/24
' Round to nearest day =ROUND(A1, 0)
' Round down to start of month =EOMONTH(A1, -1) + 1
' Round down to start of year =DATE(YEAR(A1), 1, 1)
### Cálculos de fim de período
excel ' End of current month =EOMONTH(A1, 0)
' End of next month =EOMONTH(A1, 1)
' End of previous month =EOMONTH(A1, -1)
' End of current year =DATE(YEAR(A1), 12, 31)
## Lógica de Data Condicional
### Usando IF com datas
excel ' Check if date is in the past =IF(A1 < TODAY(), "Past", "Future")
' Check if date is within last 30 days =IF(AND(A1 >= TODAY()-30, A1 <= TODAY()), "Recent", "Old")
' Calculate age =IF(MONTH(TODAY()) >= MONTH(A1), YEAR(TODAY()) - YEAR(A1), YEAR(TODAY()) - YEAR(A1) - 1)
### Lógica de Data Complexa
excel ' Calculate fiscal year (starts July 1) =IF(MONTH(A1) >= 7, YEAR(A1) + 1, YEAR(A1))
' Calculate quarter =ROUNDUP(MONTH(A1)/3, 0)
' Add business days (skipping weekends) =WORKDAY(A1, 10)
## Formatação de data
## Formatos de data personalizados
### Códigos de formato
```text
Format Code Examples:
d Day (1-31)
dd Day with leading zero (01-31)
ddd Day abbreviation (Mon)
dddd Full day name (Monday)
m Month (1-12)
mm Month with leading zero (01-12)
mmm Month abbreviation (Jan)
mmmm Full month name (January)
yy 2-digit year (23)
yyyy 4-digit year (2023)
h Hour (0-23)
hh Hour with leading zero (00-23)
m Minute (0-59)
mm Minute with leading zero (00-59)
s Second (0-59)
ss Second with leading zero (00-59)
AM/PM AM/PM indicator
Aplicando Formatos
excel
' Apply date format via formula
=TEXT(A1, "yyyy-mm-dd")
' Apply datetime format with seconds
=TEXT(A1, "yyyy-mm-dd hh:mm:ss")
' Custom format: "January 15, 2023 at 2:30 PM"
=TEXT(A1, "mmmm dd, yyyy at h:mm AM/PM")
' ISO 8601 format
=TEXT(A1, "yyyy-mm-ddThh:mm:ss")
Importante: TEXT() retorna um valor de string. Use operações numéricas primeiro e depois formate no final.
Armadilhas Comuns
Conflitos no sistema de datas
Sistema de Data 1900 vs 1904
Problema: Sistemas de datas mistas causam erros de cálculo significativos.
excel
' Check if workbook uses 1904 date system
' Excel Options > Advanced > When calculating this workbook > Use 1904 date system
Solução: Sempre use Ferramentas > Opções > Avançado para verificar as configurações do sistema de datas antes de trabalhar com datas.
Bug do ano bissexto (1900)
O Excel trata incorretamente 1900 como ano bissexto, incluindo 29 de fevereiro de 1900 (que não existia):
excel
' March 1, 1900 in Excel
=DATE(1900, 3, 1) ' Returns 61 (correct)
' February 28, 1900 in Excel
=DATE(1900, 2, 28) ' Returns 59 (correct)
' February 29, 1900 (DOESN'T EXIST)
=DATE(1900, 2, 29) ' Returns 60 (incorrect - this day never happened)
Solução alternativa: O sistema de datas de 1904 corrige esse bug, mas introduz problemas de compatibilidade com arquivos do Windows Excel.
Problemas de fuso horário
O Excel armazena datas sem informações de fuso horário:
excel
' Current time in Excel
=NOW() ' Returns local system time
Prática recomendada: armazene carimbos de data/hora UTC em colunas separadas e mantenha metadados de fuso horário para conversões.
Texto versus formatos de data
Problema: Datas armazenadas como texto não podem ser usadas em cálculos.
excel
' Check if cell contains date or text
=ISNUMBER(A1) ' TRUE for dates, FALSE for text
' Convert text to date
=DATEVALUE("2023-01-15")
=TIMEVALUE("14:30:00")
' Parse combined date and time text
=DATEVALUE("2023-01-15") + TIMEVALUE("14:30:00")
Otimização de desempenho
Desempenho de cálculo
Evite funções voláteis
Problema: Funções como NOW() e TODAY() recalculam a cada alteração, diminuindo a velocidade de pastas de trabalho grandes.
Solução: Armazene resultados de funções voláteis em células estáticas:
excel
> ' BAD: Every row recalculates
> =IF(A1 > NOW(), "Future", "Past")
>
> ' GOOD: Calculate once in cell B1
> B1: =NOW()
> A2: =IF(A1 > $B$1, "Future", "Past")
>
```>
> ### Usar intervalos nomeados
>
>
excel
' Define named ranges (Formulas > Name Manager) EPOCH_DATE = 25569 SECONDS_PER_DAY = 86400
' Use in formulas =(A1 - EPOCH_DATE) * SECONDS_PER_DAY
> **Benefício:** Intervalos nomeados melhoram a legibilidade e facilitam a manutenção das fórmulas.
### Fórmulas de matriz para operações em lote
excel ' Convert multiple Unix timestamps at once (Excel 365) =A2:A100/86400 + DATE(1970,1,1)
' Calculate ages for a range =YEAR(TODAY()) - YEAR(A2:A100)
## Exemplos de integração
## Exportando para CSV
Ao exportar datas do Excel para CSV:
excel ' Format dates as ISO 8601 before exporting =TEXT(A1, "yyyy-mm-ddThh:mm:ss")
> **Prática recomendada:** salve como CSV com codificação UTF-8 para preservar os formatos de data.
## Importando da API
Analise datas JSON de APIs:
excel ' Assuming cell A1 contains: 1673761800 (Unix timestamp) ' Convert to Excel date =(A1/86400) + DATE(1970,1,1)
' Format as readable date =TEXT((A1/86400) + DATE(1970,1,1), "yyyy-mm-dd hh:mm:ss")
## Integração de banco de dados
Trabalhando com bancos de dados SQL:
excel ' Prepare date for SQL INSERT =TEXT(A1, "yyyy-mm-dd hh:mm:ss") ' Returns: "2023-01-15 14:30:00"
' Convert SQL DATETIME to Excel =DATEVALUE(LEFT(A1, 10)) + TIMEVALUE(MID(A1, 12, 8))
## Resumo das melhores práticas
## Lista de verificação de tratamento de datas
```text
✅ Always verify date system (1900 vs 1904) before calculations
✅ Use named ranges for constants (EPOCH_DATE, SECONDS_PER_DAY)
✅ Store volatile function results (NOW(), TODAY()) in static cells
✅ Use TEXT() only for final display formatting
✅ Validate date formats before calculations (ISNUMBER, DATEVALUE)
✅ Use NETWORKDAYS for business day calculations
✅ Apply consistent date formatting across workbooks
✅ Document date assumptions (timezones, epoch references)
✅ Test edge cases (leap years, month boundaries)
❌ Don't mix text and date formats in calculations
❌ Don't use volatile functions in large datasets
❌ Don't assume dates are in UTC without documentation
❌ Don't hardcode timezone offsets in formulas
❌ Don't ignore the 1900 leap year bug for historical dates
Solução de problemas comuns
Problema: Datas são exibidas como números
excel
' Solution 1: Format as date
' Select cells > Right-click > Format Cells > Date
' Solution 2: Use TEXT() function
=TEXT(A1, "yyyy-mm-dd")
' Solution 3: Check for text dates
' If ISNUMBER(A1) returns FALSE, use:
=DATEVALUE(A1)
Problema: Cálculos de data incorretos
excel
' Check 1: Verify date system
' Excel Options > Advanced > Use 1904 date system
' Check 2: Ensure consistent units
' Days: =A1 + 7
' Hours: =A1 + (4/24)
' Minutes: =A1 + (30/1440)
' Seconds: =A1 + (45/86400)
' Check 3: Verify date components
' Ensure DATE() has correct arguments: YEAR, MONTH, DAY
Problema: erros de conversão de fuso horário
excel
' Solution: Maintain separate timezone column
A1: Excel timestamp
B1: Timezone offset (e.g., -5 for EST)
C1: =A1 + (B1/24)
Ferramentas relacionadas
- Excel Timestamp Converter - Conversão instantânea entre datas seriais do Excel e carimbos de data/hora Unix
- Conversor de formato de carimbo de data/hora - Converta entre vários formatos de carimbo de data/hora
- [Calculadora de data](/calculadora de data) - Adicione ou subtraia dias, semanas, meses de datas
- Current Timestamp - Obtenha o carimbo de data/hora atual em vários formatos
- Unix Timestamp Converter - Converte carimbos de data e hora Unix em datas
Recursos Adicionais
- Documentação das funções de data do Microsoft Excel
- Práticas recomendadas do sistema de datas do Excel
- Compreendendo os cálculos de datas do Excel
Para processamento de dados em grande escala (>10.000 linhas), considere usar o Power Query ou macros VBA para obter melhor desempenho. As funções do Excel são otimizadas para uso interativo e podem se tornar lentas com conjuntos de dados massivos.