Conversor de timestamp Unix

  

 

Tamanho

Pressione Esc para sair da tela cheia

Como funciona

  1. Veja a hora atual

    O número grande é o horário Unix agora, em segundos. Ele avança a cada segundo. Toque em Copiar para levar o número.

  2. Converta um timestamp

    Escolha “Timestamp para data” e cole um número. Com 10 dígitos, ele é lido em segundos; com 13, em milissegundos. Você vê o horário local, o UTC e o ISO 8601.

  3. Converta uma data

    Escolha “Data para timestamp”, ajuste a data e a hora, depois horário local ou UTC. O timestamp fica pronto para copiar.

Alguma sugestão para melhorar esta ferramenta?

Criamos ferramentas tão simples e intuitivas quanto possível, com alguns bônus aqui e ali. Conte para a gente o que deixaria esta ainda melhor.

O que é um timestamp Unix?

Um timestamp Unix, também chamado de tempo Unix, epoch ou hora POSIX, é o número de segundos que passaram desde 1º de janeiro de 1970, às 00:00:00 UTC. Esse instante é “o epoch”. Um segundo depois, o contador estava em 1; um dia depois, em 86.400.

O mesmo instante tem o mesmo timestamp em qualquer lugar da Terra. Os fusos horários só entram em cena quando o número vira uma data para alguém ler. É por isso que servidores, bancos de dados, logs e APIs adoram o timestamp: um único número inteiro, sem fuso, fácil de ordenar e de subtrair.

Segundos ou milissegundos?

A maioria dos sistemas conta em segundos, o que hoje dá um número de 10 dígitos. JavaScript, Java e muitas APIs contam em milissegundos: 13 dígitos. Alguns bancos de dados e ferramentas de rastreamento descem até microssegundos (16 dígitos) ou nanossegundos (19 dígitos).

O conversor acima olha o tamanho do número e escolhe a unidade para você. Se a data cair em 1970 ou num futuro muito distante, a unidade provavelmente estava errada: divida ou multiplique por 1.000.

TimestampData e hora (UTC)Observação
01º jan. 1970, 00:00:00O epoch
1.000.000.0009 set. 2001, 01:46:40Primeiro timestamp de 10 dígitos
1.234.567.89013 fev. 2009, 23:31:30Comemorado por desenvolvedores
1.700.000.00014 nov. 2023, 22:13:20Um número redondo recente
2.000.000.00018 maio 2033, 03:33:20O próximo grande número redondo
2.147.483.64719 jan. 2038, 03:14:07Último segundo do tempo em 32 bits com sinal

O problema do ano 2038

Muitos sistemas antigos guardam o timestamp num inteiro de 32 bits com sinal. O maior valor possível é 2.147.483.647, que corresponde a 19 de janeiro de 2038, às 03:14:07 UTC. Um segundo depois, o contador estoura e vira −2.147.483.648, e esses sistemas passam a ler 13 de dezembro de 1901, às 20:45:52.

Os sistemas modernos de 64 bits estão tranquilos por bilhões de anos. O risco está em equipamentos embarcados, formatos de arquivo antigos, bancos de dados com colunas de 32 bits e código que converte o tempo para um inteiro de 32 bits. No Linux, as plataformas de 32 bits ganharam tempo em 64 bits com o kernel 5.6, em 2020, e a glibc 2.34, em 2021, mas os programas ainda precisam ser recompilados para aproveitar. Um bom teste: grave uma data em 2040 e leia de volta.

Tempo Unix e segundos intercalares

O tempo Unix faz de conta que todo dia tem exatamente 86.400 segundos. O UTC de verdade recebeu 27 segundos intercalares desde 1972, o último em 31 de dezembro de 2016. Durante um segundo intercalar, o tempo Unix em geral repete um segundo ou estica os segundos em volta, técnica chamada de smearing, usada por alguns grandes provedores de nuvem. Por isso um timestamp Unix não é uma contagem exata de segundos decorridos: é um número de dias vezes 86.400, mais os segundos do dia em curso.

Na prática, isso raramente importa, e vai importar cada vez menos. Em novembro de 2022, a Conferência Geral de Pesos e Medidas decidiu ampliar até 2035 a diferença permitida entre o UTC e a rotação da Terra, o que na prática acaba com os segundos intercalares. O Serviço Internacional de Rotação da Terra já anunciou que não haverá segundo intercalar no fim de dezembro de 2026.

Fusos horários e horário de verão

Um timestamp indica um instante, e não a hora de um relógio de parede. No timestamp 1.700.000.000, eram 22h13 em Lisboa, 19h13 em Brasília e 18h13 em Manaus: três horários locais, um número só. Para guardar datas, mantenha o timestamp (ou uma data ISO 8601 com “Z”) e converta para o horário local só na hora de mostrar. No banco de fusos que os sistemas usam, o horário de Brasília se chama America/Sao_Paulo.

O horário de verão mostra bem o motivo. O Brasil não adota mais o horário de verão desde 2019, mas até lá ele terminava à meia-noite, quando os relógios voltavam para 23h00: a hora das 23h00 à meia-noite acontecia duas vezes, e um horário local sozinho ficava ambíguo. Os timestamps, enquanto isso, seguiam subindo segundo a segundo, sem pulo. Na entrada do horário de verão, a hora local da meia-noite à 1h00 era pulada, mas nenhum timestamp ficava faltando. Datas antigas do Brasil ainda dependem dessas regras, e é o banco de fusos que as aplica.

Timestamp ou ISO 8601?

O ISO 8601 é o irmão legível do timestamp: 2023-11-14T22:13:20Z é o mesmo instante que 1.700.000.000. O timestamp é compacto e fácil de comparar; a data ISO é fácil de ler num log ou num arquivo JSON. Os dois não deixam dúvida, desde que a data ISO traga “Z” ou um deslocamento como −03:00.

Como obter um timestamp Unix no código

JavaScript

// Horário Unix atual em segundos (Date.now() está em milissegundos)
Math.floor(Date.now() / 1000)

// Timestamp para data
new Date(1700000000 * 1000).toISOString()   // "2023-11-14T22:13:20.000Z"

// Data para timestamp
Date.UTC(2026, 0, 1) / 1000                  // 1767225600

Python

import time
from datetime import datetime, timezone

int(time.time())                                       # horário Unix atual
datetime.fromtimestamp(1700000000, tz=timezone.utc)    # 2023-11-14 22:13:20+00:00
int(datetime(2026, 1, 1, tzinfo=timezone.utc).timestamp())   # 1767225600

PHP

time();                                   // horário Unix atual
gmdate('Y-m-d H:i:s', 1700000000);        // "2023-11-14 22:13:20"
strtotime('2026-01-01 00:00:00 UTC');     // 1767225600

SQL

-- MySQL (FROM_UNIXTIME usa o fuso da sessão)
SELECT UNIX_TIMESTAMP();
SELECT FROM_UNIXTIME(1700000000);

-- PostgreSQL
SELECT EXTRACT(EPOCH FROM now())::bigint;
SELECT to_timestamp(1700000000);

-- SQLite
SELECT strftime('%s', 'now');
SELECT datetime(1700000000, 'unixepoch');

Shell

date +%s                              # horário Unix atual
date -u -d @1700000000                # Linux (date do GNU)
date -u -r 1700000000                 # macOS e BSD
date -u -d '2026-01-01 00:00' +%s     # 1767225600 (date do GNU)

Armadilhas comuns

  • Horário local sem querer. Montar uma data a partir de “2026-01-01 00:00” sem fuso usa o horário local do computador. Acrescente “Z” ou “UTC”, ou use a opção UTC acima, quando você quer dizer UTC. No Brasil, a diferença é de 3 horas no horário de Brasília.
  • Segundos lidos como milissegundos. Um número de 10 dígitos lido em milissegundos cai em janeiro de 1970. Um número de 13 dígitos lido em segundos cai daqui a dezenas de milhares de anos.
  • Timestamps negativos. Datas antes de 1970 são números negativos: −86.400 é 31 de dezembro de 1969. A maioria das ferramentas modernas lida bem com eles, algumas antigas não.

Para ver que horas um timestamp marca em outra cidade, use o conversor de fuso horário. Para contar os dias entre duas datas, use a calculadora de datas, e para durações em horas e minutos, a calculadora de horas.

Perguntas

Qual é o timestamp Unix atual?

É o número grande no alto desta página, atualizado a cada segundo no seu aparelho. Ele conta os segundos que passaram desde 1º de janeiro de 1970, às 00:00:00 UTC.

Como converter um timestamp Unix em data?

Cole o número em “Timestamp para data”. No código, multiplique os segundos por 1.000 e passe para new Date() em JavaScript, ou use datetime.fromtimestamp() em Python.

O timestamp Unix está em UTC?

Sim. A contagem começa à meia-noite UTC de 1º de janeiro de 1970, e o mesmo instante tem o mesmo timestamp em todos os fusos. Só a exibição como data depende do fuso.

Por que o meu timestamp tem 13 dígitos?

Porque está em milissegundos, como em JavaScript, em Java e em muitas APIs. Divida por 1.000 para ter segundos. O conversor detecta isso sozinho.

O que acontece em 2038?

Em 19 de janeiro de 2038, às 03:14:07 UTC, o timestamp passa de 2.147.483.647, o máximo de um inteiro de 32 bits com sinal. Sistemas que ainda guardam o tempo assim vão voltar para 1901. Sistemas de 64 bits não são afetados.

O tempo Unix conta os segundos intercalares?

Não. O tempo Unix trata todo dia como tendo exatamente 86.400 segundos, então os 27 segundos intercalares acrescentados ao UTC desde 1972 não entram como segundos a mais.

Como pegar o timestamp atual em JavaScript?

Date.now() devolve milissegundos. Para segundos, use Math.floor(Date.now() / 1000).

Como ver o horário Unix no terminal?

Rode date +%s no Linux ou no macOS. Para ler um timestamp, use date -u -d @1700000000 no Linux ou date -u -r 1700000000 no macOS.

Que horas eram em Brasília no timestamp 1.700.000.000?

19h13min20s de 14 de novembro de 2023, já que Brasília está 3 horas atrás do UTC (22:13:20). Em Manaus, uma hora a menos: 18h13min20s.

Um timestamp Unix pode ser negativo?

Pode. Valores negativos são datas antes de 1970: −86.400 é 31 de dezembro de 1969, às 00:00 UTC.