Conversor de timestamp JavaScript para ISO 8601
Converta um timestamp JavaScript em uma data e hora ISO 8601 precisa sem depender do horário atual, da localidade do navegador ou do relógio do servidor.
Executar grátis
Informe um inteiro em milissegundos desde a época Unix e receba a data UTC correspondente, com três casas de precisão e Z no final. O cálculo é determinístico: o mesmo número sempre produz a mesma string. Valores negativos anteriores a 1970 e todo o intervalo temporal do JavaScript são aceitos, o que ajuda em logs, migrações e testes reproduzíveis.
Informe milissegundos, não segundos
Timestamps JavaScript normalmente contam milissegundos desde 1970-01-01T00:00:00.000Z, enquanto muitas ferramentas Unix e APIs contam segundos. Essa diferença de mil vezes é a origem mais comum de conversões inesperadas. Cole o valor numérico como o JavaScript o forneceu, sem aspas, separadores, sufixos de unidade ou expressões. O conversor aceita inteiros porque uma string ISO com três casas decimais representa milissegundos inteiros com exatidão. Decimais, valores não finitos e texto numérico são rejeitados em vez de arredondados ou interpretados. Essa regra impede que uma entrada inválida gere uma data aparentemente correta. Caso a origem esteja em segundos, multiplique-a por mil antes do envio, desde que o resultado permaneça no intervalo suportado. O campo timestamp_ms repete o número aceito para ligar claramente o dado original à representação formatada.
Entenda o resultado UTC determinístico
O resultado é uma data e hora ISO 8601 em UTC. O Z final significa deslocamento zero de UTC, e não o fuso local de quem faz a solicitação. Assim, horas, minutos, segundos e milissegundos permanecem estáveis entre regiões, horário de verão e configurações de execução. O cálculo não consulta o relógio nem chama o objeto Date do JavaScript. Ele separa o timestamp em um dia UTC inteiro e um horário não negativo dentro desse dia, depois converte o total com aritmética gregoriana limitada. Isso é importante para fixtures e análise de incidentes: uma entrada idêntica não muda por causa da localidade ou do momento da execução. Timestamps negativos usam divisão pelo piso, portanto o milissegundo anterior à época Unix pertence corretamente a 1969-12-31. Anos fora de 0000 a 9999 usam a forma estendida com sinal.
Use a saída com segurança
Use o campo iso quando um rótulo UTC canônico for mais legível do que um número de época: logs estruturados, consoles, auditorias, fixtures JSON, relatórios de migração ou respostas de API. Manter o número e a string ajuda você a identificar confusões entre segundos e milissegundos. A conversão apenas formata; ela não localiza fusos, não deduz onde ocorreu um evento e não cria uma exibição regional. Faça essas etapas separadamente e preserve UTC como formato de transporte. O intervalo aceito corresponde ao limite do JavaScript: mais ou menos 8,640,000,000,000,000 milissegundos. Valores externos, NaN, Infinity, ausências, strings e frações são rejeitados. Rede, aleatoriedade, localidade e relógio não influenciam a resposta. Você pode chamar a API por US$ 0,002 ou executar no navegador e obter sempre um resultado reproduzível.
Casos de uso
Ler logs de aplicações
Transforme um campo opaco em milissegundos em um instante UTC comparável entre serviços e regiões.
Criar fixtures estáveis
Gere um valor ISO canônico de um timestamp fixo sem permitir que relógio ou fuso alterem o teste.
Auditar migrações temporais
Mantenha o número original ao lado da forma ISO ao revisar transformações de bancos de dados ou APIs.
Perguntas frequentes
A entrada usa segundos ou milissegundos?
Milissegundos. Timestamps JavaScript contam milissegundos desde a época Unix; multiplique valores em segundos por 1,000 primeiro.
Meu fuso horário local é usado?
Não. A saída fica sempre em UTC, indicado pelo Z final, sem depender do navegador ou servidor.
É possível converter datas anteriores a 1970?
Sim. Informe um timestamp negativo para receber a data UTC gregoriana correspondente.
Por que valores fracionários são rejeitados?
O contrato representa milissegundos inteiros exatos e emite três casas; a rejeição evita arredondamento silencioso.
Quanto custa?
Cada conversão pela API custa US$ 0,002. A execução no navegador também permite conversões interativas determinísticas.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/date/js-timestamp-to-iso \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"timestamp":1717245296789}'const res = await fetch("https://api.kit.forhosting.com/date/js-timestamp-to-iso", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"timestamp": 1717245296789
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/date/js-timestamp-to-iso",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"timestamp": 1717245296789
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/date/js-timestamp-to-iso", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"timestamp":1717245296789}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"timestamp":1717245296789}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/date/js-timestamp-to-iso", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"timestamp": 1717245296789
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "date.js_timestamp_to_iso",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |