Utilia

Conversor de timestamp Unix

Converte timestamps Unix em segundos ou milissegundos em datas legíveis na hora local, em UTC e em ISO 8601, e transforma qualquer data em tempo epoch.

Timestamp atual
–

Timestamp → data

Hora local
–
UTC
–
ISO 8601
–

Data → timestamp

Segundos
–
Milissegundos
–

Como usar o conversor de timestamp Unix

  1. Para converter um timestamp numa data, cola um valor epoch como 1700000000 ou 1700000000000. A ferramenta deteta pela ordem de grandeza se está em segundos ou em milissegundos.
  2. Lê o resultado na tua Hora local, em UTC e no formato ISO 8601.
  3. Para fazer o caminho inverso, introduz uma data e uma hora; a ferramenta devolve o valor epoch correspondente em Segundos e em Milissegundos.
  4. Consulta o Timestamp atual no topo, que se atualiza em tempo real, sempre que precisares do «agora» como valor epoch.

O que é um timestamp Unix?

Um timestamp Unix, também chamado tempo epoch ou tempo POSIX, é o número de segundos decorridos desde a época Unix: 1 de janeiro de 1970 às 00:00:00 UTC. Por exemplo, 1700000000 corresponde a 14 de novembro de 2023 às 22:13:20 UTC. As datas anteriores a 1970 são representadas por números negativos.

Os timestamps são populares entre programadores porque são um único número que não depende de fusos horários, da hora de verão nem de formatos de data. Comparar dois momentos é uma simples subtração, e ordenar pelo tempo é uma simples ordenação numérica. Encontras timestamps em bases de dados, ficheiros de registo, respostas de APIs, claims JWT como exp e iat, metadados de ficheiros e agendadores do tipo cron.

Repara que o tempo Unix ignora os segundos intercalares: cada dia conta exatamente 86 400 segundos. Isso mantém a aritmética simples, e é por isso que um timestamp não é uma contagem rigorosa de cada segundo físico desde 1970.

Segundos ou milissegundos

A fonte de confusão mais frequente é a unidade. Os sistemas Unix tradicionais, o PHP, o time.time() do Python e a maioria das bases de dados usam segundos, o que hoje dá um número de 10 algarismos. O Date.now() do JavaScript, o System.currentTimeMillis() do Java e muitas APIs JSON usam milissegundos, o que dá um número de 13 algarismos. Interpretar milissegundos como segundos atira-te dezenas de milhares de anos para o futuro; interpretar segundos como milissegundos deixa-te em janeiro de 1970. Esta ferramenta olha para o tamanho do número para escolher automaticamente a unidade certa e, ao converter uma data, mostra os dois valores para copiares o que o teu sistema espera.

Hora local, UTC e ISO 8601

Um timestamp identifica um instante preciso, mas esse instante é apresentado de forma diferente consoante o fuso horário. O resultado local usa o fuso horário configurado no teu dispositivo (em Portugal continental, UTC+0 no inverno e UTC+1 no verão), enquanto o UTC é a referência universal usada pelos servidores e pelos registos. O ISO 8601, como 2023-11-14T22:13:20.000Z, é o formato de texto inequívoco recomendado para trocar datas entre sistemas; o Z final significa UTC.

O problema do ano 2038

Muitos sistemas antigos guardam o tempo Unix como inteiro de 32 bits com sinal, cujo valor máximo é 2 147 483 647. Esse limite é atingido a 19 de janeiro de 2038 às 03:14:07 UTC. Um segundo depois, um contador assim transborda para um número negativo grande e é lido como uma data em dezembro de 1901. Os sistemas operativos, as bases de dados e as linguagens modernas passaram em grande parte para valores de tempo de 64 bits, que empurram o limite milhares de milhões de anos para o futuro, mas dispositivos embebidos, formatos de ficheiro antigos e colunas antigas de bases de dados ainda podem ser afetados. O próprio JavaScript não é afetado, porque guarda o tempo em milissegundos num número de vírgula flutuante de 64 bits.

Privacidade

Todas as conversões acontecem no teu navegador, com as funções de data que ele já traz. Nenhum timestamp nem nenhuma data é enviado para um servidor.

Perguntas frequentes

Como sei se o meu timestamp está em segundos ou em milissegundos?

Conta os algarismos. Uma data atual tem 10 algarismos em segundos e 13 em milissegundos. A ferramenta aplica automaticamente a mesma lógica, com base no tamanho do número.

Porque é que a hora local é diferente da UTC?

Ambas descrevem o mesmo instante. A hora local aplica o desvio do fuso horário do teu dispositivo e as regras da hora de verão, enquanto o UTC não tem desvio. Se partilhas uma hora com pessoas noutros sítios, o UTC ou o ISO 8601 evitam mal-entendidos.

Um timestamp Unix pode ser negativo?

Sim. Os valores negativos representam momentos anteriores a 1 de janeiro de 1970 UTC. Por exemplo, -86400 é 31 de dezembro de 1969 às 00:00:00 UTC.

Um timestamp Unix contém um fuso horário?

Não. Um timestamp é sempre relativo ao UTC e não traz informação de fuso horário. O fuso horário só importa quando o apresentas como data e hora de calendário.

Os meus sistemas vão avariar em 2038?

Só se guardarem o tempo num inteiro de 32 bits com sinal. Verifica bases de dados antigas, firmware embebido e formatos de ficheiro binários. Tudo o que usa tempo de 64 bits está seguro no futuro previsível.