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.