Conversor de Timestamp
Converta entre timestamps Unix e formatos de data e hora
Timestamp para Data
Data para Timestamp
Comparação de Fuso Horário Global
Exemplos de Formato Comuns
O que é um Timestamp?
Um timestamp é um valor numérico representando um tempo específico. O timestamp Unix é o número de segundos passados desde 1 de janeiro de 1970 00:00:00 UTC (chamado Epoch Unix). É a forma padrão de representar tempo em sistemas computacionais, com consistência entre plataformas e fusos horários. Timestamps são divididos em nível de segundos (10 dígitos) e nível de milissegundos (13 dígitos). Timestamps de segundos são comumente usados em sistemas Unix/Linux, enquanto milissegundos são comuns em JavaScript e outras linguagens de programação. Com timestamps, a primeira pergunta é se o valor está em segundos, milissegundos ou horário local formatado. Timestamps Unix representam instantes independentes de fuso, mas a exibição como data depende de fuso horário e horário de verão. A ferramenta é útil para depurar logs, APIs, bancos, expiração de cache e eventos agendados. Em comunicação com usuários, o fuso deve aparecer claramente para evitar datas locais diferentes.
Como Usar
Timestamp para Data
- Insira um timestamp Unix no cartão da esquerda
- Selecione o fuso horário de destino (ex.: UTC+8)
- Clique no botão converter para ver a data e hora convertidas
- Os resultados incluem: formato padrão, ISO 8601, formato local e mais
Data para Timestamp
- Selecione data e hora no cartão da direita
- Selecione o fuso horário de origem usado por essa data e hora
- Clique no botão converter para obter o timestamp Unix
- Os resultados incluem timestamps em segundos e milissegundos
Dicas de Fuso Horário
- Verifique se o valor de origem usa segundos ou milissegundos; misturar timestamps de 10 e 13 dígitos é uma causa comum de datas erradas.
- Sempre confirme o fuso horário pretendido ao converter datas legíveis, especialmente em logs, tarefas agendadas e sistemas multi-região.
Casos de uso
Princípio técnico
Um timestamp Unix conta o tempo decorrido desde o Epoch Unix, definido como 1970-01-01T00:00:00Z, que é o ponto zero que o tempo POSIX usa para rotular cada instante posterior. O tempo POSIX ignora deliberadamente os segundos bissextos: cada dia civil é tratado como exatamente 86.400 segundos, então dois timestamps que abrangem uma inserção de segundo bissexto terão um segundo de diferença em relação a uma contagem estrita de relógio atômico, mas a troca é que a conversão entre segundos do epoch e campos de calendário UTC permanece um divmod limpo por 86.400. Os dois formatos que aparecem diariamente são segundos (10 dígitos hoje, ex.: 1717000000) e milissegundos (13 dígitos, ex.: 1717000000000). O Date.now() do JavaScript retorna milissegundos desde o epoch e `new Date(ms)` espera milissegundos, enquanto o `date +%s` do Unix, o time.Unix do Go e a maioria das colunas TIMESTAMP de bancos de dados usam segundos. A detecção por comprimento é a desambiguação usual: um valor de 10 dígitos cai na faixa 2001-2286 quando lido como segundos, e o mesmo valor lido como milissegundos estaria dentro de 1970. Exibir um timestamp requer um fuso horário. O UTC é escrito com o sufixo `Z`; outros offsets usam `±HH:MM` (ex.: `+08:00` para Hora Padrão da China, `-05:00` para Hora Padrão do Leste dos EUA). O ISO 8601 permite vários separadores opcionais enquanto o RFC 3339 é um perfil mais restrito que os fixa, é por isso que especificações de API geralmente exigem RFC 3339 com um offset explícito. Sistemas legados que armazenam segundos do epoch em um inteiro com sinal de 32 bits sofrem overflow no valor máximo positivo 2147483647, que decodifica para 2038-01-19T03:14:07Z (o problema Y2038); o armazenamento de 64 bits empurra o limite muito além da relevância humana.
- O Epoch Unix é fixado em 1970-01-01T00:00:00Z e o tempo POSIX ignora segundos bissextos, então cada dia é tratado como exatamente 86.400 segundos.
- O Date.now() do JavaScript retorna milissegundos; `Math.floor(Date.now() / 1000)` converte para timestamp em nível de segundos.
- Limite Y2038: timestamp com sinal de 32 bits sofre overflow em 2147483647 = 2038-01-19T03:14:07Z; armazenamento de 64 bits evita isso.
- ISO 8601 vs RFC 3339: RFC 3339 é um perfil ISO 8601 mais restrito que exige um offset explícito (`Z` ou `±HH:MM`) e é preferido para APIs e logs.
- O Date do ECMAScript é limitado a ±100.000.000 dias do epoch (≈ ±273.785 anos), é por isso que `new Date(8,64e15)` e `new Date(-8,64e15)` são os limites absolutos.
- Os claims JWT `exp`, `iat` e `nbf`, o `Cache-Control: max-age` e o Cookie `Expires` usam todos segundos Unix (RFC 7519, RFC 7234), então some/subtraia diretamente com `Math.floor(Date.now()/1000)`.
- O fuso horário afeta a data/hora renderizada, mas não o valor do timestamp em si; o mesmo segundo de epoch é renderizado como horários de parede diferentes em UTC+8 e UTC-5.
Exemplos
Converter um timestamp Unix de 10 dígitos para uma data legível
Entrada: 1781526600
UTC: 2026-06-15 12:30:00
Pequim (UTC+8): 2026-06-15 20:30:00
ISO 8601: 2026-06-15T12:30:00Z
POSIX: IEEE 1003.1 define o tempo Unix como segundos desde 1970-01-01 00:00:00 UTC (a Epoch)
ISO: ISO 8601 define o formato YYYY-MM-DDThh:mm:ssZ para representação inequívoca de data e horaConverter uma data de volta para timestamp
Entrada: 2026-01-01 00:00:00 (UTC)
Segundos (10 dígitos): 1767225600
Milissegundos (13 dígitos): 1767225600000
Comando Unix: date -d @1767225600
Nota: JavaScript Date.getTime() retorna milissegundos; Python time.time() retorna segundos (float)
POSIX: o tipo time_t é tradicionalmente um inteiro com sinal de 32 ou 64 bitsDiferenciar segundos e milissegundos
1781526600 -> 10 dígitos, segundos -> 2026-06-15 12:30:00 UTC
1781526600000 -> 13 dígitos, milissegundos -> 2026-06-15 12:30:00.000 UTC
Bug comum: um valor de 13 dígitos lido como segundos resulta no ano ~74.000
Dica rápida: 10-11 dígitos = segundos (1970-2286), 13 dígitos = milissegundos (padrão JavaScript)Decodificar a claim exp de um JWT
Payload JWT: { "exp": 1798617600 }
Decodificado: 2027-01-01 00:00:00 UTC
Agora atual: 1781526600
Válido por: 17.091.000 segundos (~198 dias restantes)
RFC: RFC 7519 seção 2 define NumericDate como segundos desde a EpochVerificação do limite Y2038
Timestamp máximo de 32 bits com sinal: 2147483647
Decodificado: 2038-01-19 03:14:07 UTC
Um segundo depois: 2147483648 -> overflow em sistemas legados de 32 bits
Correção: usar time_t de 64 bits (padrão em Linux/macOS modernos) ou armazenar como string ISO 8601
POSIX: sistemas com time_t de 32 bits sofrerão wrap-around após 2038-01-19Perguntas frequentes
O que é um timestamp Unix?
O número de segundos decorridos desde 01/01/1970 00:00:00 UTC, a 'época Unix'. JavaScript e muitas APIs usam milissegundos desde a mesma época (timestamp Unix × 1000). A página aceita ambos e mostra a data correspondente no seu horário local e em UTC.
Segundos vs milissegundos vs microssegundos vs nanossegundos?
Sistemas diferentes usam precisões diferentes. O `time()` do Unix retorna segundos. Date.now() do JavaScript retorna milissegundos. Instant do Java suporta nanossegundos. A página detecta automaticamente pela contagem de dígitos: 10 dígitos = segundos (em 2001-2286), 13 = milissegundos, 16 = microssegundos, 19 = nanossegundos.
Por que 19 de janeiro de 2038 é importante?
É o 'problema do ano 2038': timestamps Unix com sinal de 32 bits estouram às 03:14:07 UTC em 19/01/2038. Sistemas que ainda usam um time_t de 32 bits voltarão para 1901. Sistemas modernos de 64 bits ficam imunes por bilhões de anos; sistemas embarcados legados precisam de correção.
Como ele lida com fusos horários?
Timestamps Unix são inerentemente UTC. A página mostra seu horário local, UTC e permite escolher qualquer fuso horário IANA (Asia/Shanghai, America/New_York, Europe/London) para exibições adicionais. O horário de verão é aplicado automaticamente por fuso.
Por que analisar 'YYYY-MM-DD' assume UTC em alguns lugares?
Datas ISO 8601 sem fuso horário são ambíguas. O construtor Date do JavaScript trata strings somente de data como UTC e strings de data-hora como locais — uma fonte notória de bugs de um dia a mais ou a menos. A página é explícita sobre qual fuso horário se aplica.
A conversão é feita localmente?
Sim. A matemática é Date do JavaScript mais Intl.DateTimeFormat. Nenhum timestamp é enviado para servidores.
Posso gerar um timestamp futuro?
Sim. Escolha uma data futura e a página retorna o timestamp correspondente. Útil para definir claims exp de JWT, datas de teste de cron jobs ou janelas de expiração de cache no código.