Converter milissegundos para data
Leia um timestamp Unix em milissegundos como data, com a parte abaixo de um segundo preservada na linha ISO 8601.
Um timestamp ou data por linha, até 500.
Cole o código em uma mensagem do Discord; cada pessoa vê o horário no próprio fuso e no próprio idioma.
Converta este timestamp no seu próprio código.
Converter milissegundos epoch em uma data
A maior parte dos valores de tempo que uma pessoa de front-end encontra está em milissegundos, porque é o que a linguagem entrega: Date.now() conta milissegundos, não segundos. Tudo o que vem depois, de pipelines de log a colunas de banco de dados, precisa então concordar sobre a unidade. Esta página abre o conversor de timestamp Unix com o menu “Unidade” já em “Milissegundos”, para que um número de treze dígitos seja lido corretamente no instante em que você o cola.
A resposta aparece em quatro linhas ao mesmo tempo: o instante no fuso selecionado no canto superior direito, o mesmo instante em <abbr title="Tempo Universal Coordenado">UTC, a forma ISO 8601 que a maioria das APIs quer de volta e a distância até agora em palavras simples. Tudo é calculado na página, então valores tirados de um log de produção ficam na sua máquina.
Treze dígitos, e quando contar não basta
A detecção automática trabalha com a contagem de dígitos e acerta em qualquer data deste século, mas a unidade é uma propriedade do sistema que produziu o número, não do número em si. Fixe o menu “Unidade” e o palpite desaparece. Errar aqui não é sutil, porque cada passo entre unidades desloca a data em três ordens de grandeza.
Unidade escolhida para 1735689600000 | Data que ela produz | Veredicto |
|---|---|---|
| Segundos | 25 de outubro de 56971 | Errado por um fator de 1000 no sentido contrário |
| Milissegundos | 1 de janeiro de 2025, 00:00:00 UTC | O que o número significa |
| Microssegundos | 21 de janeiro de 1970, 02:08:09 UTC | Uma data perto de 1970 é o sintoma clássico |
| Nanossegundos | 1 de janeiro de 1970, 00:28:55 UTC | Quase a própria epoch |
Uma data nos primeiros dias de 1970, ou uma a dezenas de milhares de anos, quase nunca é dado corrompido. É o mesmo número inteiro lido com a unidade errada, e a correção está no menu, não no número.
De onde vêm os timestamps em milissegundos
- JavaScript:
Date.now()enew Date().getTime()devolvem milissegundos, enew Date(n)os espera, motivo pelo qual um valor de dez dígitos tem que ser multiplicado por 1000 antes. - Java:
System.currentTimeMillis()eInstant.toEpochMilli(). - MongoDB: o tipo de data do BSON é uma contagem de milissegundos desde a epoch em 64 bits com sinal.
- Kafka, Elasticsearch e a maioria dos formatos de log em JSON, que herdaram a unidade das linguagens que escrevem nelas.
Bancos de dados e ferramentas Unix vão para o lado oposto e contam em segundos, então a fronteira entre um serviço em JavaScript e uma coluna SQL é exatamente onde o fator 1000 se perde. Converter aqui um valor suspeito e ler a data é o jeito mais rápido de ver qual lado o deixou cair.
Arredondamento, e converter mais de um
Ir de milissegundos para segundos é um truncamento, então faça isso em um lugar só e em um sentido só. Misturar um arredondamento para baixo em um serviço com um arredondamento para o mais próximo em outro produz diferenças de um segundo que só aparecem quando dois eventos caem no mesmo segundo. A aba “Em lote” abaixo do conversor segue a mesma regra: cole até 500 linhas e cada linha recebe uma coluna “Segundos” com a fração descartada ao lado de uma coluna “ISO 8601 (UTC)” que a mantém, prontas para copiar como CSV.
Conversões relacionadas
Para um valor de dez dígitos existe converter timestamp para data, e para o sentido inverso converter data para timestamp, que devolve segundos e milissegundos para a data escolhida. O timestamp Unix atual é o contador ao vivo na barra do topo, e os timestamps do Discord precisam da forma em segundos, um motivo frequente para converter para baixo.