O tempo Unix conta segundos desde 1970
Um carimbo de tempo Unix é o número de segundos decorridos desde a meia-noite UTC de 1º de janeiro de 1970. Ele não carrega fuso horário nem horário de verão, e por isso servidores e bancos de dados guardam instantes assim. Uma data legível é esse número representado num fuso específico.
A quantidade de dígitos revela a unidade. Dez dígitos são segundos e treze são milissegundos. O JavaScript trabalha em milissegundos enquanto as ferramentas Unix e muitos bancos trabalham em segundos, então multiplicar ou dividir por mil aparece o tempo todo.
ISO 8601 é a forma padrão de escrever, como 2026-09-16T00:00:00Z. O Z final significa UTC, e aparece um deslocamento como +09:00 quando um fuso é anexado. Trocar datas nesse formato elimina a ambiguidade criada pelas diferentes ordens nacionais de dia, mês e ano.
Erros que vêm dos fusos horários
O carimbo de tempo não tem fuso, mas a data que você lê na tela tem. Brasília fica três horas atrás de UTC, então a meia-noite UTC de 16 de setembro ainda é 21h do dia 15 lá. Comparar só as datas é o que cria a aparente diferença de um dia.
Misturar segundos e milissegundos joga o resultado para 1970 ou para dezenas de milhares de anos. Uma conversão que cai em 1º de janeiro de 1970 significa que um valor em milissegundos foi lido como segundos; um ano na casa dos cinquenta mil significa o contrário.
O problema de 2038 afeta apenas sistemas que contam segundos num inteiro de 32 bits com sinal. Passado 19 de janeiro de 2038 o valor estoura e fica negativo. A maioria dos ambientes atuais usa 64 bits, então isso aparece sobretudo em dispositivos embarcados antigos e colunas de bancos legados.