O tempo Unix (muitas vezes chamado de “o epoch”) é uma forma simples de representar um ponto no tempo: o número de segundos decorridos desde 1970-01-01 00:00:00 UTC, sem contar os segundos bissextos. É compacto, independente de linguagem e fácil de comparar e ordenar.

Quadrinho: xkcd #376 — usado sob a Licença Creative Commons Atribuição-NãoComercial 2.5. Crédito: Randall Munroe / xkcd.
- O tempo Unix é o número de segundos decorridos desde 1970-01-01 00:00:00 UTC, normalmente armazenado como um inteiro de 64 bits.
- Use-o para armazenamento interno, comparações, rate limiting, TTLs e formatos binários compactos.
- Não o use para exibição, lógica de calendário/fuso horário ou intervalos decorridos precisos — use timestamps legíveis por humanos (ISO 8601) e relógios monotônicos.
- Use sempre inteiros de 64 bits; 32 bits estouram em 2038.
Exemplos rápidos
- Shell:
date +%simprime o tempo Unix atual em segundos. - Python:
import time; int(time.time())— segundos, outime.time()para segundos fracionários. - JavaScript:
Math.floor(Date.now() / 1000)— Date.now() retorna milissegundos.
Quando você deve usar o tempo Unix
- Timestamps de máquina para máquina: compacto, rápido de comparar e bem suportado entre plataformas.
- Bancos de dados e índices onde você só precisa de ordenação cronológica ou durações.
- Protocolos ou formatos binários que precisam de uma representação numérica compacta e independente de fuso horário.
- Logs ou métricas de curta duração, onde espaço e velocidade de parsing importam.
Regra prática: use o tempo Unix para armazenamento interno e cálculos (ordenação, rate limiting, TTLs), especialmente quando você também armazena o fuso horário ou uma representação canônica em outro lugar.
Quando você não deve usar o tempo Unix
- Para exibir datas a humanos — não é legível e depende de conversão de fuso horário.
- Para registros legais/de auditoria, onde se espera um timestamp legível por humanos e inequívoco (ISO 8601 / RFC 3339).
- Quando você precisa expressar conceitos de calendário (meia-noite local, dias úteis, eventos recorrentes) — esses exigem bibliotecas cientes de calendário.
- Para medir intervalos decorridos precisos na presença de mudanças no relógio do sistema — use um relógio monotônico (por exemplo,
clock_gettime(CLOCK_MONOTONIC)/time.monotonic()no Python).
Pegadinhas e dicas
- Segundos bissextos: o tempo Unix normalmente os ignora. Se você precisa considerá-los explicitamente, o tempo Unix pode ser a primitiva errada.
- Ano 2038: inteiros com sinal de 32 bits estouram para o tempo Unix baseado em segundos. Use inteiros de 64 bits para armazenamento de longo prazo.
- Precisão: se você precisa de precisão abaixo de um segundo, armazene segundos fracionários (floats) ou campos separados de nanossegundos.
- Sempre registre o fuso horário ou armazene uma string ISO 8601 quando também importa como esse instante foi apresentado a um usuário.
Padrão recomendado
- Para logs e APIs: prefira timestamps formatados em ISO 8601 / RFC 3339 (por exemplo,
2025-10-16T12:00:00Z) para legibilidade humana e interoperabilidade. - Para cálculos internos e armazenamento compacto: mantenha um epoch Unix em segundos ou milissegundos (com um contrato claro — segundos vs ms vs ns). Use inteiros de 64 bits para durabilidade.
- Para durações ou tempo decorrido: use relógios monotônicos em vez do tempo Unix do relógio de parede.
Conclusão
O tempo Unix é uma ferramenta simples e prática — ótima para comparações, eficiência de armazenamento e interoperabilidade — mas não é uma solução única para tudo. Combine-o com timestamps legíveis por humanos e informações de fuso horário quando precisar de clareza, e prefira relógios monotônicos para medir intervalos.
Bons timestamps!