Por que 1/1/1970 é a “época da época”?


456

Porque é

1 de janeiro de 1970 00:00:00

considerado o tempo da época ?


21
Não sei por que alguém pensou que isso era subjetivo. O tempo da época é um esquema de registro de data e hora padrão.
ConcernedOfTunbridgeWells

5
Hoje foram 380.000 horas atrás
mplungjan 8/13

21
Devemos começar a contar o tempo desde essa data, por isso estamos agora no ano 44.
Leonardo Raele

3
Hoje, agora, é 1499969999! É apenas aprox. Faltam 8 horas!
Dr Beco

1
@LeonardoRaele Yeah! então, por exemplo, a Segunda Guerra Mundial começou no ano 31 BE!
Siavash Mortazavi

Respostas:


418

As primeiras versões do unix mediam o tempo do sistema em intervalos de 1/60 s. Isso significava que um número inteiro não assinado de 32 bits só poderia representar um período de tempo inferior a 829 dias. Por esse motivo, o tempo representado pelo número 0(chamado época ) teve que ser definido em um passado muito recente. Como isso foi no início dos anos 1970, a época foi definida para 1971-1-1.

Mais tarde, a hora do sistema foi alterada para incrementar a cada segundo, o que aumentou o período de tempo que poderia ser representado por um número inteiro não assinado de 32 bits para cerca de 136 anos. Como não era mais tão importante espremer cada segundo do balcão, a época foi arredondada para a década mais próxima, tornando-se 1970-1-1. Deve-se supor que isso foi considerado um pouco melhor do que 1971-1-1.

Observe que um número inteiro assinado de 32 bits usando 1970-1-1 como época pode representar datas até 2038-1-19 , data em que ele será agrupado em 1901-12-13.


30
1/60 tem algo a ver com a frequência da rede elétrica americana?
xtofl 07/07/2009

55
É a frequência de um dos osciladores nas placas de sistema usadas no momento. Não era necessário para o oscilador ser 60Hz, uma vez que correu em DC, mas foi provavelmente barato para usar o que era mais comum na época, e TVs estavam sendo então produzido em massa ...
Matt Howells

18
Na verdade, na época, era muito comum que relógios de computador e RTCs fossem sincronizados com a forma de onda da rede elétrica dos EUA porque era (é?) Muito confiável. Foi multiplicado para obter o relógio do processador e dividido para obter segundos para o RTC.
Alexios #

12
@mafioso: Certo, vou colocar um lembrete no meu laptop para 2038 -... 1901-12-13.

18
@JediKnight Isso é especulação com base em minhas próprias experiências como desenvolvedor: alterar um padrão leva tempo e, se sua mudança não se concretizar, você acaba com os padrões concorrentes . A solução real para o problema da época são números inteiros de 64 bits, não avançando a época no tempo.
Jake

51

História .

As versões mais antigas do tempo Unix tinham um número inteiro de 32 bits incrementando a uma taxa de 60 Hz, que era a taxa do relógio do sistema no hardware dos primeiros sistemas Unix. O valor 60 Hz ainda aparece em algumas interfaces de software como resultado. A época também diferia do valor atual. A primeira edição do Unix Programmer's Manual, datada de 3 de novembro de 1971, define o horário do Unix como "o horário desde 00:00:00 de 1º de janeiro de 1971, medido em sexagésimos de segundo".


1
Tempo de época é de 1 Janeiro de 1970, não 01 de janeiro de 1971.
Steve Harrison

10

http://en.wikipedia.org/wiki/Unix_time#History explica um pouco sobre as origens do tempo do Unix e a época escolhida. A definição de hora unix e a data da época passaram por algumas mudanças antes de estabilizar o que é agora.

Mas não diz por que exatamente 1/1/1970 foi escolhido no final.

Trechos notáveis ​​da página da Wikipedia:

A primeira edição do Manual do Programador Unix de 3 de novembro de 1971 define o horário do Unix como "o horário desde 00:00:00 de 1º de janeiro de 1971 , medido em sexagésimos de segundo".

Por causa da faixa limitada, a época foi redefinida mais de uma vez , antes que a taxa fosse alterada para 1 Hz e a época fosse definida como seu valor atual.

Vários problemas posteriores, incluindo a complexidade da presente definição, resultam do tempo do Unix ter sido definido gradualmente pelo uso, em vez de totalmente definido para começar.


6

Data de referência da época

Uma data de referência da época é um ponto na linha do tempo a partir da qual contamos o tempo. Momentos antes desse ponto são contados com um número negativo, momentos depois são contados com um número positivo.

Muitas épocas em uso

Por que 1 de janeiro de 1970 00:00:00 é considerado o horário da época?

Não, não a época, uma época. Existem muitas épocas em uso .

Essa escolha de época é arbitrária .

Os principais sistemas e bibliotecas de computadores usam qualquer uma de pelo menos duas dúzias de épocas . Uma das épocas mais populares é conhecida como Unix Time , usando o momento UTC de 1970 que você mencionou.

Embora popular, o 1970 do Unix Time pode não ser o mais comum. Também em exibição, o mais comum seria 0 de janeiro de 1900 para inúmeras planilhas do Microsoft Excel e Lotus 1-2-3, ou 1º de janeiro de 2001, usadas pela estrutura Cocoa da Apple em mais de um bilhão de máquinas iOS / macOS em todo o mundo em inúmeros aplicativos. Ou talvez 6 de janeiro de 1980, usado por dispositivos de GPS ?

Muitas granularidades

Sistemas diferentes usam granularidade diferente na contagem do tempo.

Até o chamado "Tempo Unix" varia, com alguns sistemas contando segundos inteiros e alguns contando milissegundos . Muitos bancos de dados, como o Postgres, usam microssegundos . Alguns, como a moderna estrutura java.time no Java 8 e posterior, usam nanossegundos . Alguns usam ainda outras granularidades.

ISO 8601

Como há muita variação no uso de uma referência de época e nas granularidades, geralmente é melhor evitar momentos de comunicação como contagem de épocas. Entre a ambiguidade da época e da granularidade, além da incapacidade dos seres humanos de perceber valores significativos (e, portanto, perder valores de buggy), use texto simples em vez de números.

A norma ISO 8601 fornece um amplo conjunto de formatos práticos e bem projetados para expressar valores de data e hora como texto. Esses formatos são fáceis de analisar por máquina e fáceis de ler por seres humanos em várias culturas.

Esses incluem:


-10

Resposta curta: por que não?

Resposta mais longa: o tempo em si realmente não importa, desde que todos que o usem concordem com seu valor. Como 1/1/70 está em uso há tanto tempo, sua utilização fará com que você codifique o mais compreensível possível para o maior número possível de pessoas.

Não há grande mérito em escolher uma época arbitrária apenas para ser diferente.


37
Como o Unix foi desenvolvido em 1969 e lançado pela primeira vez em 1971, era razoável supor que nenhuma máquina teria que representar um tempo de sistema anterior a 1970-01-01-00: 00: 00.
Jörg W Mittag

3
Como desenvolvedor de jogos de simulação históricos, parece bastante tolo que os projetistas de alguns objetos temporais tendem a assumir que todos os programas desejam apenas representar datas no futuro ou no passado recente. Obviamente, podemos programar nossas próprias representações ou trabalhar com um fator de ajuste, mas ainda assim.
Dronz 06/02

8
O mesmo problema pré-época aplica-se a "práticas" usos não-jogo, como planilhas de negócios, apresentação de dados científicos, UIs máquina do tempo, etc.
Lenoxus

7
@Dronz Você deve levar em conta que isso foi projetado para um computador de US $ 72.000 com 9 KB de RAM que usava transistores e diodos para portas lógicas como CPU (sem chips na época!). Portanto, não era "bobo" fazer a coisa mais básica que funcionava.
Camilo Martin

2
O OP está correto em um nível meta, os esquemas que trabalhamos para o tempo sempre foram bastante arbitrários. O número de dias em um ano, o número de dias no mês, o ano "0" e as regras para o ano bissexto são ... loucos. Todo sistema é apenas uma série de compromissos ruins, porque foi o melhor que eles puderam fazer com a tecnologia disponível e funcionaram bem o suficiente para seu caso de uso imediato. O que é verdade para todos os projetos de engenharia
:)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.