Se você já consultou um banco de dados ou trabalhou com uma API moderna, provavelmente já viu datas retornadas não como "12 de outubro de 2026", mas como uma sequência enorme e intimidante de números como 1791800000. Este é um Timestamp Unix e é a espinha dorsal universal da cronometragem na ciência da computação.
Lidar com datas e horários na programação é notoriamente difícil. Os fusos horários mudam, o horário de verão começa e termina de forma imprevisível e os anos bissextos introduzem dias extras. Para resolver esta realidade caótica, os engenheiros que construíram o sistema operacional Unix decidiram inventar sua própria linha do tempo absoluta.
A Origem: 1º de janeiro de 1970
Um carimbo de data/hora Unix é simplesmente o número de segundos decorridos desde 1º de janeiro de 1970, às 00:00:00 UTC. Este exato momento da história é conhecido como a "Época Unix".
Por que 1970? Porque no início da década de 1970 o armazenamento era incrivelmente caro. Armazenar uma data como uma string legível como "1970-01-01 00:00:00" ocupa quase 20 bytes de memória. Armazená-lo como um único número inteiro de 32 bits consumiu apenas 4 bytes. Ao fazer o ponto de partida próximo ao momento em que o Unix foi inventado, eles maximizaram a quantidade de tempo futuro que poderiam armazenar nesses 4 bytes.
Por que os desenvolvedores adoram carimbos de data/hora Unix
A principal razão pela qual o horário Unix é universalmente adotado em APIs, bancos de dados e microsserviços é que ele não tem fuso horário. Representa um momento único e absoluto no tempo globalmente.
Se você salvar um evento em um banco de dados usando o horário do servidor local ("03:00 PM EST") e depois migrar seu servidor para Londres, todas as suas contas serão interrompidas. Mas se um evento acontecer no carimbo de data/hora 1700000000, esse número será idêntico, quer o usuário que o consulta esteja em Tóquio, Nova York ou Paris. O aplicativo frontend simplesmente pega esse número inteiro e o converte matematicamente para o fuso horário local do usuário na tela.
Converta carimbos de data/hora instantaneamente
Não tente calcular os segundos mentalmente. Use nossa ferramenta off-line para traduzir instantaneamente carimbos de data/hora de 10 ou 13 dígitos em datas legíveis no seu fuso horário local.
Abra o conversor de carimbo de data/horaSegundos x milissegundos (a regra dos 10 x 13 dígitos)
Um dos bugs mais comuns no desenvolvimento web é passar um carimbo de data/hora para uma função e obter uma data no ano 1970 ou no ano 52.000. Isso acontece devido a uma confusão entre segundos e milissegundos.
- Tempo Unix padrão (segundos): um número de 10 dígitos (por exemplo,
1700000000). Este é o padrão em Linux, PHP e na maioria dos bancos de dados backend como MySQL. - Tempo JavaScript (milissegundos): um número de 13 dígitos (por exemplo,
1700000000000). A funçãoDate.now()do JavaScript inclui milissegundos para maior precisão.
Se você inserir um carimbo de data/hora de back-end de 10 dígitos no JavaScript sem multiplicá-lo por 1.000, o JavaScript assumirá que você está falando dos primeiros dias de janeiro de 1970.
// Correctly handling a Unix timestamp in JavaScript
const backendTimestamp = 1700000000;
const dateObject = new Date(backendTimestamp * 1000);
console.log(dateObject.toLocaleDateString()); // Converts to local user timezone
O problema do ano 2038 (Y2K38)
O tempo do Unix tem um prazo iminente. Como foi originalmente armazenado como um número inteiro assinado de 32 bits, o número máximo que pode conter é 2.147.483.647.
Em 19 de janeiro de 2038, às 03:14:07 UTC, o relógio Unix atingirá esse número máximo. Um segundo depois, o número inteiro irá estourar, passando para um número negativo. Os sistemas legados que não foram atualizados para a arquitetura de 64 bits acreditarão repentinamente que o ano é 1901, causando falhas catastróficas em software em todo o mundo.
Felizmente, quase todos os hardwares, bancos de dados e linguagens de programação modernos (como kernels Linux de 64 bits e Node.js moderno) já fizeram a transição para o tempo de 64 bits, empurrando o próximo overflow para bilhões de anos no futuro.
Perguntas frequentes (FAQ)
O tempo Unix leva em conta segundos bissextos?
Surpreendentemente, não. O horário Unix pressupõe que cada dia tenha exatamente 86.400 segundos. Quando o mundo adiciona um “segundo bissexto” para se ajustar à rotação da Terra, os sistemas Unix normalmente apenas repetem o mesmo carimbo de data e hora duas vezes para permanecerem sincronizados sem quebrar os cálculos matemáticos.
Um carimbo de data/hora Unix pode ser negativo?
Sim. Qualquer carimbo de data/hora menor que 0 representa uma data anterior à Época Unix (1º de janeiro de 1970). Por exemplo, -86400 representa exatamente 31 de dezembro de 1969.
Por que minha data convertida sempre aparece como 1970?
Você provavelmente está passando um carimbo de data/hora de 10 dígitos para uma função que espera 13 dígitos (milissegundos). Multiplique seu carimbo de data/hora por 1000 antes de convertê-lo.