Um timestamp Unix identifica um instante por uma distância em relação a uma origem comum. Os algarismos, porém, não dizem se essa distância está expressa em segundos ou milissegundos. Uma data escrita como hora local acrescenta outra dúvida: sem Z ou um desvio explícito, a mesma leitura do relógio pode representar instantes diferentes em lugares diferentes.
Neste guia vamos acompanhar meio segundo antes da origem Unix através do conversor de timestamp. É um exemplo pequeno que expõe diferenças importantes entre valores negativos, arredondamento, UTC e apresentação local. O procedimento também ajuda a verificar campos de expiração, eventos de registo e respostas de APIs, mantendo separadas as questões de formato e de significado.
Identificar o instante, a unidade e a apresentação
A origem Unix é 1970-01-01T00:00:00Z. O valor zero aponta para esse instante tanto em segundos como em milissegundos. Para outros valores, a unidade muda tudo: 1000 segundos correspondem a dezasseis minutos e quarenta segundos depois da origem; 1000 milissegundos correspondem apenas a um segundo. Uma data aparentemente razoável não demonstra que a unidade esteja certa.
O conversor exige uma escolha explícita. Não utiliza o comprimento do número para adivinhar, porque valores históricos curtos e datas muito distantes tornam essa heurística pouco fiável. Confirma sempre a unidade na documentação do campo de origem. Duas propriedades da mesma API podem utilizar convenções diferentes.
UTC e hora local são representações do mesmo instante. A ferramenta mostra a data ISO em UTC e uma apresentação na zona detetada pelo navegador, com a zona visível. Uma diferença na hora ou até no dia não significa que o timestamp tenha mudado; significa que foi aplicada outra regra de apresentação.
Testar a fronteira anterior a 1970
Utiliza este valor ISO exato:
1969-12-31T23:59:59.500Z
O resultado em milissegundos é -500. Em segundos inteiros, é -1, porque a conversão arredonda para menos infinito. Truncar em direção a zero produziria 0 e colocaria um instante anterior à origem no segundo errado. Esta diferença é fácil de ignorar quando todos os exemplos utilizados são posteriores a 1970.
Faz também esta verificação com um desvio explícito:
1970-01-01T01:00:00+01:00
O resultado é zero nas duas unidades. O relógio escrito mostra 01:00, mas o desvio +01:00 indica uma hora de avanço relativamente a UTC. Portanto, essa data representa a meia-noite UTC da origem Unix. Não é necessário conhecer a localização do computador para interpretar o valor.
Estes exemplos são fixos e sintéticos. Ao contrário do botão Agora, podem ser repetidos com resultados exatos. Guarda-os como casos de controlo quando comparares outra biblioteca, uma base de dados ou uma implementação que faça arredondamento de forma diferente.
Percorrer as duas direções de conversão
Seleciona a direção de data ISO para timestamp. Introduz 1969-12-31T23:59:59.500Z, escolhe milissegundos e converte. Exige o valor -500. Altera a unidade para segundos e volta a converter; o resultado deve ser -1. Uma mudança de opção limpa o resultado anterior para evitar que uma unidade nova fique associada a um valor antigo.
Introduz depois 1970-01-01T01:00:00+01:00 e confirma zero. Na direção inversa, escreve -500 e seleciona milissegundos. A saída UTC deve regressar a 1969-12-31T23:59:59.500Z. Compara a apresentação local, observando a zona indicada. Copia cada representação pelo respetivo botão, registando a unidade juntamente com o número.
O botão Agora captura o relógio do navegador no momento do clique. Não é um relógio de servidor nem uma atualização contínua. Utiliza-o para uma comparação pontual e guarda o valor copiado. Para uma investigação reproduzível, prefere valores fixos e anota a origem, a unidade, a representação UTC e a zona local.
Perceber a validação ISO e o arredondamento negativo
A entrada ISO tem de incluir data, horas, minutos, segundos e Z ou um desvio numérico explícito. Uma forma como 2026-09-17T10:00:00 é rejeitada porque não identifica um instante sem contexto adicional. As componentes do calendário também são verificadas: 2026-02-30T00:00:00Z não se transforma silenciosamente numa data de março.
ECMAScript representa valores temporais como milissegundos relativos à origem e define um intervalo finito para Date. A ferramenta exige ainda inteiros seguros na entrada numérica e verifica o intervalo antes de formatar a saída. O campo está limitado a 100 caracteres. Assim, uma falha pode indicar sintaxe, precisão ou intervalo, em vez de apresentar apenas uma data inválida sem explicação.
O arredondamento para menos infinito associa cada instante fracionário ao segundo inteiro que o contém. Meio segundo depois da origem pertence ao segundo zero. Meio segundo antes corresponde a -0.5 segundos e pertence ao segundo -1. Utilizar milissegundos preserva esta distinção sem eliminar a parte fracionária da representação em segundos.
Investigar resultados que parecem deslocados
Uma data inesperadamente próxima de 1970 ou muito distante no futuro costuma indicar uma unidade incorreta. Não multipliques ou dividas por mil apenas até a data parecer plausível. Regressa ao contrato do produtor e confirma se o campo conta segundos, milissegundos ou outra unidade que esta ferramenta não aceita diretamente.
Um erro de data pode resultar da ausência de zona, de um dia impossível ou de sintaxe não suportada. Utiliza uma forma completa, como 2026-09-17T10:00:00Z ou 2026-09-17T12:00:00+02:00. Uma data sem hora ou uma expressão regional como 17/09/2026 10:00 não define um instante inequívoco para este conversor.
Se o valor exceder o intervalo de inteiros seguros ou o intervalo de datas, conserva o original como texto e consulta a sua origem. Arredondá-lo até passar na validação pode criar outro instante. Quando apenas a hora local parece errada, verifica primeiro a zona exibida e a saída UTC. O problema pode estar na configuração do ambiente, não no timestamp.
Aplicar a conversão a situações reais
Ao analisar a expiração de um token, compara valores na mesma unidade e verifica a regra da fronteira: o instante exato ainda é válido ou já expirou? Converter um campo temporal não confirma a assinatura, a autenticidade ou as permissões do token. Estas verificações pertencem ao protocolo e ao sistema que o utiliza.
Nos registos de eventos, conserva o timestamp original e a representação UTC. Acrescenta a hora local apenas quando facilitar a leitura. Para importar numa base de dados, escolhe um tipo de coluna cuja precisão corresponda à fonte e confirma como o controlador trata zonas e frações. Uma conversão correta no navegador não impede uma transformação posterior na camada de armazenamento.
Um desvio como +02:00 não identifica uma zona IANA e não descreve mudanças futuras de hora de verão. Para agendar atividades por hora civil, guarda a zona separadamente e utiliza um agendador próprio. Se estiveres a preparar respostas de API para código tipado, o guia de JSON para TypeScript explica por que uma string de data não se transforma automaticamente num contrato temporal completo.
Conhecer os limites do modelo utilizado
A ferramenta converte inteiros em segundos ou milissegundos e datas ISO estritas com zona explícita. Não adivinha unidades, não interpreta datas regionais informais, não modela segundos intercalares e não preserva precisão inferior ao milissegundo. A entrada ISO aceita até três dígitos de fração. A saída em segundos inteiros descarta essa precisão através do arredondamento documentado.
A apresentação local depende do navegador e da sua base de dados de fusos horários. É uma ajuda de leitura, não uma demonstração definitiva de uma regra histórica. A era é indicada para evitar confusão em anos anteriores à era comum, mas isso não transforma a ferramenta num conversor entre calendários históricos.
A conversão também não demonstra que o instante seja atual, fiável ou o campo correto de um documento. O processamento é local, mas capturas de ecrã e notas de diagnóstico podem divulgar informação. Usa valores sintéticos e conserva apenas os dados necessários para explicar o problema.
Fechar a verificação com provas repetíveis
Identifica o campo de origem e a sua unidade documentada. Guarda o texto original antes de o transformar. Testa zero, um valor conhecido do teu contexto e um caso negativo quando relevante. Para a direção ISO, exige uma data real com Z ou desvio explícito e confirma UTC antes de interpretar a hora local.
Para este guia, verifica -500 milissegundos e -1 segundos para 1969-12-31T23:59:59.500Z. Exige zero para 1970-01-01T01:00:00+01:00 e rejeição para 2026-02-30T00:00:00Z. Na direção inversa, confirma que o valor em milissegundos recupera a data ISO original.
Copia números juntamente com unidades e regista a zona utilizada na apresentação local. Se o destino exigir segundos, documenta a perda de frações. Se exigir um agendamento por hora civil, mantém também a zona IANA e as regras apropriadas. Estas anotações tornam a conversão verificável por outra pessoa, sem depender da aparência de uma data no teu ecrã.
Fontes: ECMAScript: objetos Date, ECMAScript: formato de data e hora e RFC 3339: datas e horas na Internet.