Como Converter Timestamps Unix

· 5 min de leitura

Os timestamps Unix são a forma como os computadores armazenam e comunicam o tempo: um único número que representa segundos desde 1 de janeiro de 1970. Eles aparecem em respostas de API, registros de banco de dados, arquivos de log e tokens JWT. Quando voce precisa saber qual data é realmente 1711824000, voce precisa de um conversor. Um conversor baseado em navegador lida com a matemática instantaneamente e permite voce ir em ambas as direções (timestamp para data, data para timestamp).

Como é um timestamp Unix

TimestampTipoLegível para humanos
0Segundos1 jan 1970 00:00:00 UTC
1000000000Segundos9 set 2001 01:46:40 UTC
1234567890Segundos13 fev 2009 23:31:30 UTC
1711824000Segundos31 mar 2024 00:00:00 UTC
1711824000000Milissegundos31 mar 2024 00:00:00 UTC
2147483647Segundos19 jan 2038 03:14:07 UTC (máximo 32-bit com sinal)

A diferença entre segundos e milissegundos é tres zeros extras. Um número de 10 dígitos está em segundos; 13 dígitos é milissegundos. A partir de 2024, todos os timestamps Unix baseados em segundos tem 10 dígitos e permanecerão assim até novembro de 2286.

Como converter timestamps

  1. Insira um timestamp ou data: cole um timestamp Unix para converter em uma data legível, ou insira uma data para obter o timestamp.
  2. Verifique o formato: o conversor detecta automaticamente segundos vs milissegundos com base no comprimento do número.
  3. Leia o resultado: veja a data no seu fuso horário local, UTC e formato ISO 8601.

Uma breve história do tempo Unix

O tempo Unix foi definido pela primeira vez no Manual do Programador Unix publicado na Bell Labs em novembro de 1971. A época original era 1 de janeiro de 1971, mas foi alterada para 1 de janeiro de 1970 logo depois e padronizada em POSIX.1 (1988).

A escolha de 1970 foi arbitrária mas prática: o Unix foi desenvolvido em 1969-1971, e iniciar a contagem perto do nascimento do SO parecia razoável. Um inteiro com sinal de 32 bits contando segundos a partir de 1970 deu uma faixa de dezembro de 1901 a janeiro de 2038, o que os designers acharam que seria suficiente.

Não é. O "problema do ano 2038" (também chamado Y2K38) é o momento em que timestamps Unix com sinal de 32 bits transbordam: 2147483647 segundos após a época, o próximo tique vira para um número negativo que os sistemas interpretam como dezembro de 1901. A maioria dos sistemas modernos migrou para timestamps inteiros de 64 bits nos anos 2000 e 2010, mas alguns dispositivos embarcados, bancos de dados mais antigos e formatos de arquivo legados ainda usam tempo de 32 bits e precisarão de patches antes de 2038.

O tempo Unix é agora o padrão de fato para representar tempo em sistemas computacionais. APIs JSON, timestamps de linhas de banco de dados, expirações JWT, tempos de bloco de blockchain, leituras de sensores IoT: quase todos usam a época Unix direta ou indiretamente.

Segundos, milissegundos, microssegundos, nanossegundos

Sistemas diferentes usam precisões diferentes:

Um timestamp de 19 dígitos pode confundir conversores esperando milissegundos; verifique a documentação de origem quando voce vir números anomalos.

Onde voce encontra timestamps

Timestamps em código

Conversão rápida em linguagens comuns:

JavaScript:

new Date(1711824000 * 1000)            // De segundos (multiplicar por 1000)
new Date(1711824000000)                // De milissegundos
Math.floor(Date.now() / 1000)          // Tempo atual em segundos
Date.now()                             // Tempo atual em milissegundos

Python:

from datetime import datetime, timezone
datetime.fromtimestamp(1711824000, tz=timezone.utc)
datetime.now(timezone.utc).timestamp()  # Tempo atual em segundos (float)

Bash:

date -u -d @1711824000                 # GNU date (Linux)
date -u -r 1711824000                  # BSD date (macOS)
date +%s                               # Tempo atual em segundos

SQL (PostgreSQL):

SELECT TO_TIMESTAMP(1711824000);       -- Converter época para timestamp
SELECT EXTRACT(EPOCH FROM NOW());      -- Época atual

Go:

time.Unix(1711824000, 0)               // De segundos
time.Now().Unix()                      // Tempo atual em segundos

Manipulação de fuso horário

É aqui que a maioria dos bugs de timestamp se esconde:

Ao enviar timestamps em APIs, use sempre segundos UTC. Ao exibir para usuários, converta para o fuso horário local deles. O conversor lida com ambas as direções.

Armadilhas comuns

Dicas

Privacidade

O conversor de timestamp Unix roda inteiramente no seu navegador. Os timestamps e datas que voce insere nunca deixam seu dispositivo. Isso importa porque os timestamps podem ser sensíveis: podem ser de arquivos de log revelando temporização de infraestrutura interna, tokens JWT com informações de usuário/sessão embutidas, depuração interna de API que não deve ser compartilhada com terceiros. Conversores de timestamp em nuvem podem registrar entradas para fins de "melhoria"; um conversor apenas no navegador tem zero exposição.

A conversão baseada em navegador também funciona offline uma vez que a página é carregada, e é rápida o suficiente para que voce possa soltar um timestamp no campo e ver a data no mesmo momento.

Perguntas frequentes

O que é o tempo de época Unix?

O tempo de época Unix (também chamado de tempo POSIX ou timestamp Unix) é o número de segundos decorridos desde 1º de janeiro de 1970 às 00:00:00 UTC. É a forma padrão como os computadores representam o tempo internamente.

Qual é a diferença entre timestamps em segundos e em milissegundos?

Os timestamps Unix em segundos têm 10 dígitos (por exemplo, 1711824000). Os timestamps em milissegundos têm 13 dígitos (por exemplo, 1711824000000). O JavaScript usa milissegundos; a maioria das APIs e bancos usa segundos. O conversor detecta automaticamente pelo tamanho.

Por que minha hora convertida está diferente por várias horas?

Os timestamps estão sempre em UTC. O conversor mostra tanto o UTC quanto o seu horário local. Se o resultado não corresponder à sua expectativa, provavelmente você está comparando uma saída em UTC com uma hora local, ou vice-versa.

O que acontece em 2038?

Sistemas que armazenam timestamps Unix como inteiros com sinal de 32 bits sofrerão overflow em 19 de janeiro de 2038. A maioria dos sistemas modernos usa inteiros de 64 bits, o que estende o alcance muito além de qualquer preocupação prática.