Há algum motivo para usar a data (1º de janeiro de 1970) como padrão padrão para manipulação de tempo? Eu vi esse padrão em Java e também em Python. Conheço essas duas línguas. Existem outras linguagens populares que seguem o mesmo padrão?
Por favor descreva.
java
python
programming-languages
Vijay Shanker Dubey
fonte
fonte
Respostas:
É o padrão do tempo Unix.
fonte
A questão faz duas suposições falsas:
Duas Doze Épocas
O tempo na computação nem sempre é rastreado desde o início de 1970 UTC . Embora essa referência de época seja popular, vários ambientes de computação ao longo das décadas usaram pelo menos quase duas dezenas de épocas . Alguns são de outros séculos. Eles variam do ano 0 (zero) a 2001.
Aqui estão alguns.
Época comum do Unix, mas não dominante
O início de 1970 é popular, provavelmente devido ao seu uso pelo Unix. Mas isso de forma alguma é dominante. Por exemplo:
January 0, 1900
(31 de dezembro de 1899).1 January 2001, GMT
.January 6, 1980
enquanto a alternativa europeia Galileo usa22 August 1999
.ISO 8601
Assumir que uma contagem desde a época está usando a época do Unix está abrindo uma grande vulnerabilidade para bugs. Essa contagem é impossível para um ser humano decifrar instantaneamente, portanto, erros ou problemas não serão facilmente sinalizados durante a depuração e registro. Outro problema é a ambigüidade da granularidade explicada abaixo.
Eu sugiro fortemente, em vez disso, serializar os valores de data e hora como strings ISO 8601 inequívocas para intercâmbio de dados, em vez de uma contagem inteira desde a época:
YYYY-MM-DDTHH:MM:SS.SSSZ
como2014-10-14T16:32:41.018Z
.Contagem do que desde a época
Outro problema com o rastreamento de tempo de contagem desde a época é a unidade de tempo, com pelo menos quatro níveis de resolução comumente usados.
As instalações originais do Unix usavam segundos inteiros, levando ao problema do ano 2038, quando atingimos o limite de segundos desde 1970 se armazenado como um inteiro de 32 bits.
Usado por bibliotecas Java mais antigas, incluindo a classe java.util.Date incluída e a biblioteca Joda-Time .
Usado por bancos de dados como Postgres .
Usado pelo novo pacote java.time no Java 8.
fonte
porque é sempre 1º de janeiro de 1970, Porque - '1º de janeiro de 1970' geralmente chamado de "data de época" é a data em que a hora começou para computadores Unix, e esse carimbo de data / hora é marcado como '0'. Qualquer momento desde essa data é calculado com base no número de segundos decorridos. Em palavras mais simples ... o carimbo de data / hora de qualquer data será a diferença em segundos entre essa data e '1 de janeiro de 1970' O carimbo de hora é apenas um número inteiro que começou no número '0' em 'Meia-noite de 1 de janeiro de 1970' e continua aumentando por '1' a cada segundo passado Para a conversão de carimbos de data / hora UNIX em datas legíveis, o PHP e outras linguagens de código aberto fornecem funções integradas.
fonte
Nenhum motivo que importa.
O
time
módulo do Python é a biblioteca C. Pergunte a Ken Thompson por que ele escolheu aquela data para uma data marcante. Talvez fosse o aniversário de alguém.O Excel usa duas épocas diferentes. Alguma razão pela qual diferentes versões do Excel usam datas diferentes?
Exceto o próprio programador, ninguém mais saberá por que esse tipo de decisão foi feito.
E...
Não importa por que a data foi escolhida. Simplesmente foi.
Os astrônomos usam sua própria data epocal: http://en.wikipedia.org/wiki/Epoch_(astronomy)
Por quê? Uma data deve ser escolhida para que a matemática funcione. Qualquer data aleatória funcionará.
Uma data muito no passado evita números negativos para o caso geral.
Alguns dos pacotes mais inteligentes usam o proléptico Gregoriano ano 1. Alguma razão para o ano 1?
Há uma razão dada em livros como Calendrical Calculations: é matematicamente um pouco mais simples.
Mas se você pensar sobre isso, a diferença entre 1/1/1 e 1/1/1970 é apenas 1969, um deslocamento matemático trivial.
fonte
1º de janeiro de 1970, 00:00:00 é o ponto zero da hora POSIX .
fonte
P) "Por que as datas são calculadas a partir de 1º de janeiro de 1970?"
A) Tinha que ser o mais recente possível, mas incluir algum passado. Provavelmente não havia outro motivo significativo, pois muitas pessoas pensam da mesma maneira.
Eles sabiam que representava um problema se o colocassem muito no passado e sabiam que daria resultados negativos se fosse no futuro. Não houve necessidade de se aprofundar no passado, pois os eventos provavelmente ocorrerão no futuro.
Notas: Os maias, por outro lado, tiveram a necessidade de situar os acontecimentos no passado, visto que tinham o conhecimento de muito do passado, para o qual fizeram um calendário de longo prazo. Apenas para colocar todos os fenômenos rotineiros no calendário.
O carimbo de data / hora não foi feito para ser um calendário, é uma época. E acredito que os maias fizeram seu calendário de longo prazo usando a mesma perspectiva. (o que significa que eles sabiam muito bem que não tinham nenhuma relação com o passado, eles apenas tinham a necessidade de vê-lo em uma escala maior)
fonte
Sim, C (e sua família). É aqui que o Java também o levou.
fonte