O que é um timestamp Unix?
Um timestamp Unix conta o número de segundos decorridos desde 00:00:00 UTC de 1º de janeiro de 1970 — chamado de época Unix (epoch). É um único número inteiro que identifica de forma exclusiva qualquer momento no tempo, independentemente do fuso horário, o que o torna o padrão universal para armazenar timestamps em bancos de dados e APIs.
Para converter um timestamp em uma data legível, divida por 86400 para obter dias e some a 1970-01-01. Na prática, navegadores e linguagens de programação fornecem funções embutidas que fazem isso. Timestamps negativos representam datas anteriores a 1970.
Como converter um timestamp Unix em data?
Para converter um timestamp Unix em data, trate-o como o número de segundos desde 00:00:00 UTC de 1º de janeiro de 1970 e some essa quantidade de segundos à época; para fazer o caminho inverso, subtraia a época de uma data UTC e conte os segundos decorridos. Exemplo: o timestamp 1000000000 se converte em 2001-09-09T01:46:40Z.
Passos para converter entre timestamp e data
- Considere o timestamp Unix como uma contagem de segundos inteiros decorridos desde a época, 1970-01-01T00:00:00 UTC.
- Multiplique por 1000 se seu ambiente de programação esperar milissegundos em vez de segundos (o objeto Date do JavaScript usa milissegundos).
- Some essa duração ao instante da época para obter a data e hora UTC correspondente.
- Para converter uma data de volta em timestamp, expresse a data em UTC, subtraia a época e conte o número de segundos inteiros entre elas.
- Timestamps anteriores a 1970 são representados como números negativos, contando segundos para trás a partir da época.
Fórmula do timestamp Unix
timestamp (segundos) = (data UTC) - (1970-01-01T00:00:00 UTC), medido em segundos
- Época (epoch) = 1970-01-01T00:00:00 UTC, o ponto de referência fixo (timestamp 0)
- 86400 = número de segundos em um dia, usado para converter uma contagem de dias em segundos e vice-versa
Exemplos de conversão de timestamp para data (UTC)
| Timestamp | Data e hora UTC |
|---|
| 0 | 1970-01-01T00:00:00Z |
| 1000000000 | 2001-09-09T01:46:40Z |
| 1721088000 | 2024-07-16T00:00:00Z |
| 1752624000 | 2025-07-16T00:00:00Z |
| 1784160000 | 2026-07-16T00:00:00Z |
Perguntas frequentes
Por que o timestamp Unix usa UTC em vez do meu horário local?
Usar um único ponto de referência UTC evita ambiguidade causada por fusos horários e mudanças de horário de verão — um timestamp sempre se refere ao mesmo instante exato em qualquer lugar do mundo, e cada aplicação o converte para o horário local do usuário apenas para exibição.
O que significa um timestamp negativo?
Um timestamp negativo representa um momento anterior à época, 1970-01-01T00:00:00 UTC. Por exemplo, -86400 significa 86.400 segundos (um dia) antes da época, ou seja, 1969-12-31T00:00:00 UTC.
Por que alguns sistemas usam milissegundos em vez de segundos?
O padrão de timestamp Unix é definido em segundos, mas algumas linguagens e APIs (notavelmente o Date.now() do JavaScript) usam milissegundos para maior precisão. Multiplique um timestamp em segundos por 1000 para obter milissegundos, ou divida um timestamp em milissegundos por 1000 para obter segundos.
O que acontece com os timestamps Unix depois do ano 2038?
Sistemas que armazenam o timestamp como um inteiro assinado de 32 bits sofrerão overflow em 19 de janeiro de 2038 às 03:14:07 UTC, um problema conhecido como o bug do ano 2038. A maioria dos sistemas modernos já usa inteiros de 64 bits para timestamps, o que estende o intervalo utilizável por bilhões de anos e evita esse overflow.
Esta ferramenta converte entre timestamps Unix e datas de calendário usando o objeto Date embutido no navegador; os resultados dependem do relógio e das configurações de fuso horário do seu dispositivo para a exibição no horário local, embora o timestamp e o valor UTC subjacentes sejam sempre inequívocos.
Sources: POSIX / IEEE Std 1003.1 — Base Definitions (Seconds Since the Epoch)