Pular para o conteúdo principal
DevTools by Decussi
  • Ferramentas
  • Dados
  • Segurança
  • Rede
  • Texto
  • Data
  • Web
  • Dev
  • SEO
  • Brasil
Ferramentas
DevTools

Ferramentas para desenvolvedores, em português. Sem cadastro e sem instalação.

Criado e mantido por Decussi

Ferramentas

  • Todas as ferramentas
  • Dados
  • Segurança
  • Rede
  • Texto
  • Data
  • Web
  • Dev
  • SEO
  • Brasil

Referência

  • Consulta rápida
  • Guias
  • Códigos HTTP
  • Cron
  • Checagens de SEO

Desenvolvedores

  • API e devs
  • llms.txt
  • ai.txt
  • Sitemap

Newsletter

Receba novidades e novas ferramentas no seu email.

Sugira uma ferramenta

Tem uma ideia? Envie sua sugestão.

  1. Início
  2. /Guias
  3. /Conversões

Como converter timestamp Unix para data (e o erro de fuso)

A conversão tem dois pontos que quase sempre dão errado: a unidade, que pode ser segundos ou milissegundos, e o fuso, que muda o resultado em horas.

Segundos ou milissegundos?

O timestamp Unix conta segundos desde 1º de janeiro de 1970 em UTC. JavaScript, porém, trabalha em milissegundos — e essa diferença de mil é a causa mais comum de datas em 1970 ou no ano 55000.

A regra prática: um timestamp com 10 dígitos está em segundos; com 13, em milissegundos.

javascript
// ✗ timestamp em segundos tratado como milissegundos
new Date(1756800000);          // 1970-01-21

// ✓ multiplique por 1000
new Date(1756800000 * 1000);   // 2025-09-02

// data atual em segundos
Math.floor(Date.now() / 1000);

Em cada linguagem

python
from datetime import datetime, timezone

# sempre informe o fuso: sem tzinfo, o resultado usa o fuso da máquina
datetime.fromtimestamp(1756800000, tz=timezone.utc)

# de volta para timestamp
int(datetime.now(timezone.utc).timestamp())
php
$data = (new DateTimeImmutable("@1756800000"))
    ->setTimezone(new DateTimeZone("America/Sao_Paulo"));

echo $data->format("d/m/Y H:i");
echo (new DateTimeImmutable())->getTimestamp();
sql
-- PostgreSQL
SELECT to_timestamp(1756800000) AT TIME ZONE 'America/Sao_Paulo';

-- MySQL
SELECT FROM_UNIXTIME(1756800000);
SELECT UNIX_TIMESTAMP(NOW());

O erro de fuso

Timestamp não tem fuso: ele é um instante absoluto. O fuso só entra na hora de exibir, e é aí que aparecem as diferenças de três horas em sistemas brasileiros rodando em servidores configurados em UTC.

A recomendação é sempre a mesma: guarde em UTC, converta apenas na exibição, e nunca dependa do fuso padrão da máquina — ele muda entre o seu computador e o contêiner de produção.

Formatar em português

javascript
const data = new Date(1756800000 * 1000);

new Intl.DateTimeFormat("pt-BR", {
  dateStyle: "long",
  timeStyle: "short",
  timeZone: "America/Sao_Paulo",
}).format(data);
// "2 de setembro de 2025 às 09:00"

Perguntas frequentes

Minha data aparece como 1970. O que houve?
O timestamp foi interpretado na unidade errada. Um valor em segundos tratado como milissegundos resulta em uma data pouco depois de 1º de janeiro de 1970. Multiplique por 1000 antes de passar ao construtor Date.
Por que a data muda três horas em produção?
Porque o servidor está em UTC e a sua máquina em horário de Brasília. Timestamp é absoluto: o que muda é o fuso da exibição. Defina o fuso explicitamente na formatação em vez de depender do padrão do ambiente.

Resolva na prática

  • Conversor de timestamp
  • Conversor de fuso horário
  • Conversor de duração

Guias relacionados

  • Como converter RGB para HEX (e HEX para RGB)