O timestamp epoch explicado: tempo Unix, tempo POSIX e segundos desde 1970

Um timestamp epoch é uma forma compacta de representar um momento como o tempo decorrido desde um ponto de partida fixo. Este guia explica o tempo Unix, os timestamps POSIX, a data do epoch Unix e por que os segundos desde 1970 UTC se tornaram o padrão no software.

O que é um epoch timestamp?

Um epoch timestamp é uma contagem numérica medida a partir de um momento de referência fixo chamado epoch. No uso cotidiano dos desenvolvedores, epoch timestamp geralmente significa timestamp Unix: o número de segundos desde 1 de janeiro de 1970 às 00:00:00 UTC. Um valor 0 é o epoch Unix exato. Valores positivos são posteriores a 1970; negativos, anteriores.

Tempo Unix vs timestamp POSIX

Tempo Unix e timestamp POSIX costumam ser usados de forma intercambiável no código de aplicação. Ambos se referem aos segundos decorridos desde o epoch Unix, ignorando os segundos bissextos para simplificar o tempo civil. O resultado prático é um inteiro estável que funciona entre sistemas operacionais, linguagens, bancos de dados, APIs e arquivos de log.

  • Data do epoch Unix: 1970-01-01 00:00:00 UTC
  • Timestamp Unix 0: o início exato do epoch Unix
  • Timestamp POSIX: segundos desde o epoch Unix em sistemas compatíveis com POSIX
  • Milissegundos epoch: o mesmo epoch, mas contado em milissegundos
  • Microssegundos ou nanossegundos epoch: maior precisão para bancos de dados e tracing

Por que o timestamp desde 1970 virou padrão

O epoch Unix era prático para os primeiros sistemas Unix e virou convenção à medida que as ideias do Unix se espalharam para as bibliotecas C, Linux, bancos de dados, servidores web e linguagens. Um único timestamp numérico é mais fácil de ordenar, comparar, transmitir e armazenar do que uma string de data localizada.

Exemplos de epoch timestamp

Alguns valores conhecidos facilitam lembrar a definição.

  • 0 = 1970-01-01 00:00:00 UTC
  • 1 = 1970-01-01 00:00:01 UTC
  • 86400 = 1970-01-02 00:00:00 UTC
  • 1700000000 = 2023-11-14 22:13:20 UTC
  • 1767225600 = 2026-01-01 00:00:00 UTC

FAQ sobre epoch timestamp

O tempo epoch é o mesmo que o tempo Unix?
No uso comum dos desenvolvedores, sim. Tempo epoch geralmente significa tempo Unix: segundos decorridos desde 1970-01-01 00:00:00 UTC.
Qual é a definição de tempo Unix?
O tempo Unix é definido como segundos desde 1970-01-01 00:00:00 UTC, sem contar os segundos bissextos.
Um timestamp POSIX considera o fuso horário?
Não. Um timestamp POSIX representa um instante. Os fusos só são aplicados ao formatar esse instante como data legível.
Os epoch timestamps são iguais no Windows, Linux e macOS?
O epoch Unix (1970-01-01 00:00:00 UTC) é idêntico nas plataformas e linguagens modernas, então o mesmo instante dá o mesmo timestamp Unix em todo lugar. O Windows usa internamente seu próprio epoch FILETIME (1601), mas os timestamps Unix e POSIX padrão usam 1970.