Segundos decorridos desde a época
(aphyr.com)-
Segundos desde a Epoch
-
Costuma-se dizer que o tempo POSIX, ou tempo Unix, significa os segundos desde 1º de janeiro de 1970 00:00:00. No entanto, isso não é exato. Por exemplo, o tempo POSIX de 2024-12-25 18:54:53 UTC é 1735152686, o que na verdade é 29 segundos menor do que os 1735152715 segundos efetivamente decorridos.
-
O tempo POSIX é derivado do Tempo Universal Coordenado (UTC) na IEEE 1003.1. A norma assume que todo dia tem exatamente 86.400 segundos. Porém, na prática, a duração de um dia não é 86.400 segundos e varia ao longo do tempo. Para ajustar isso, astrônomos periodicamente declaram segundos intercalares no UTC.
-
-
Arqueologia
-
O apêndice B da IEEE 1003 inclui uma discussão interessante sobre segundos intercalares. Quando a norma foi publicada, 14 segundos intercalares já haviam sido adicionados desde 1º de janeiro de 1970. Esses segundos intercalares são ignorados para facilitar o cálculo de diferenças de tempo.
-
A maioria dos sistemas trata o tempo como um valor que aumenta continuamente. Porém, a maioria dos sistemas não rastreia segundos intercalares nem está sincronizada com uma referência de tempo padrão. Assim, a exigência de que os segundos desde a época representem com exatidão os segundos entre a hora de referência e a época é inadequada.
-
Uma interpretação consistente dos segundos desde a época pode ser importante para certos tipos de aplicações distribuídas. O acúmulo de segundos intercalares é imprevisível, e o número de segundos intercalares desde a época provavelmente aumentará.
-
-
O que fazer em vez disso
-
Para calcular a duração entre dois eventos no mesmo computador, deve-se usar
CLOCK_MONOTONIC. Se não houver necessidade de trocar tempo POSIX com outros sistemas, pode-se usar TAI, GPS ou LORAN. -
Se for necessário um alinhamento aproximado com o sistema de timestamps POSIX, é possível distribuir os segundos intercalares por uma janela de tempo mais longa. Bibliotecas como
qntmt-a-ioferecem suporte à conversão entre POSIX e TAI. -
Há esforços em andamento para eliminar os segundos intercalares, com a expectativa de concluir isso até 2035. Isso exigirá trabalho adicional para construir tabelas de conversão para tudo o que assume "86.400 segundos por dia", mas tornará mais simples perguntar quantos segundos há entre dois instantes. Pelo menos para tempos após 2035.
-
1 comentários
Comentários do Hacker News
Li o livro de ficção científica "A Deepness in the Sky". Achei interessante a menção a segundos desde a época no livro
Há um esforço em andamento para eliminar os segundos intercalares, com a esperança de concluí-lo até 2035
A "época UTC" moderna é 1º de janeiro de 1972
Sempre aprendo algo novo quando leio sobre medição do tempo
Recentemente trabalhei em código para VAX, ou executado sobre OpenVMS, e foi a primeira vez que vi uma época em 17 de novembro de 1858
Alguns instantes no tempo não podem ser representados como timestamps POSIX, e alguns timestamps POSIX não correspondem a um tempo real
Acho que este artigo estragou meu Natal
Ao armazenar datas no banco de dados, sempre salvo como tempo de época Unix, e a informação de fuso horário fica separada
Cerca de 10 anos atrás, ouvi em uma conferência que o Google não usa segundos intercalares e os distribui ao longo de segundos normais
Fico me perguntando se existe uma forma de medição do tempo que seja sincronizada e monotonicamente crescente