¿Por qué es 1/1/1970 el "tiempo de época"?

456

Por que es

1 de enero de 1970 00:00:00

considerado el tiempo de la época ?

rahul
fuente
21
No estoy seguro de por qué alguien pensó que esto era subjetivo. El tiempo de 'Época' es un esquema estándar de sellado de tiempo.
ConcernedOfTunbridgeWells
55
Hoy fue hace 380,000 horas
mplungjan
21
Deberíamos comenzar a contar el tiempo desde esta fecha, así que ahora estamos en el año 44.
Leonardo Raele
3
¡Hoy, ahora mismo, es 1499969999! Es solo aprox. 8 horas para ir!
Dr. Beco
1
@LeonardoRaele ¡Sí! entonces, por ejemplo, la Segunda Guerra Mundial comenzó el año 31 BE!
Siavash Mortazavi

Respuestas:

418

Las primeras versiones de Unix midieron el tiempo del sistema en intervalos de 1/60 s. Esto significaba que un entero sin signo de 32 bits solo podía representar un lapso de tiempo inferior a 829 días. Por esta razón, el tiempo representado por el número 0(llamado la época ) tuvo que establecerse en el pasado muy reciente. Como esto fue a principios de la década de 1970, la época se estableció en 1971-1-1.

Más tarde, el tiempo del sistema se cambió para aumentar cada segundo, lo que aumentó el lapso de tiempo que podría representar un entero sin signo de 32 bits a alrededor de 136 años. Como ya no era tan importante exprimir cada segundo del mostrador, la época se redondeó a la década más cercana, convirtiéndose en 1970-1-1. Hay que suponer que esto se consideró un poco más limpio que 1971-1-1.

Tenga en cuenta que una de 32 bits firmado entero usando 01/01/1970 como su época puede representar hasta fechas 19/01/2038 , fecha en la que se va a envolver alrededor de 12/13/1901.

Matt Howells
fuente
30
¿Tiene 1/60 algo que ver con la frecuencia de la red eléctrica estadounidense?
xtofl
55
Es la frecuencia de uno de los osciladores en las placas del sistema utilizadas en ese momento. No era necesario que el oscilador fuera de 60Hz ya que funcionaba con CC, pero probablemente era barato usar lo que era más común en ese momento, y los televisores se producían en masa en ese momento ...
Matt Howells
18
En realidad, en ese momento, era muy común que los relojes de computadora y los RTC se sincronizaran con la forma de onda de la red eléctrica de EE. UU. Porque era (¿es?) Muy confiable. Se multiplicó para obtener el reloj del procesador y se dividió para obtener segundos para el RTC.
Alexios
12
@mafioso: Correcto, configuraré un recordatorio en mi computadora portátil para 2038 -... 1901-12-13.
18
@JediKnight Esta es una especulación basada en mis propias experiencias como desarrollador: cambiar un estándar lleva tiempo, y si tu cambio no se afianza, entonces terminas con estándares competitivos . La solución real al problema de la época son los enteros de 64 bits, no avanzar la época en el tiempo.
Jake
51

Historia .

Las primeras versiones del tiempo Unix tenían un número entero de 32 bits que se incrementaba a una velocidad de 60 Hz, que era la velocidad del reloj del sistema en el hardware de los primeros sistemas Unix. Como resultado, el valor 60 Hz todavía aparece en algunas interfaces de software. La época también difería del valor actual. La primera edición del Manual del programador de Unix, fechada el 3 de noviembre de 1971, define el tiempo de Unix como "el tiempo transcurrido desde las 00:00:00, 1 de enero de 1971, medido en sexagésimas de segundo".

Stu Thompson
fuente
1
La época de la época es el 1 de enero de 1970, no el 1 de enero de 1971.
Steve Harrison el
10

http://en.wikipedia.org/wiki/Unix_time#History explica un poco sobre los orígenes del tiempo Unix y la época elegida. La definición del tiempo de Unix y la fecha de la época pasaron por un par de cambios antes de estabilizarse en lo que es ahora.

Pero no dice por qué exactamente el 1/1/1970 fue elegido al final.

Extractos notables de la página de Wikipedia:

La primera edición del Manual del programador de Unix del 3 de noviembre de 1971 define la hora de Unix como "la hora desde las 00:00:00 del 1 de enero de 1971 , medido en sesenta de segundo".

Debido a [el] rango limitado, la época fue redefinió más de una vez , antes de que la velocidad se cambiara a 1 Hz y la época se ajustara a su valor actual.

Varios problemas posteriores, incluida la complejidad de la presente definición, resultan del tiempo Unix que se ha definido gradualmente por el uso en lugar de estar completamente definido para comenzar.

Dawie Strauss
fuente
6

Fecha de referencia de la época

Una fecha de referencia de época es un punto en la línea de tiempo desde el que contamos el tiempo. Momentos antes de ese punto se cuentan con un número negativo, momentos después se cuentan con un número positivo.

Muchas épocas en uso

¿Por qué el 1 de enero de 1970 00:00:00 se considera el tiempo de época?

No, no la época, una época. Hay muchas épocas en uso .

Esta elección de época es arbitraria .

Los principales sistemas informáticos y bibliotecas utilizan cualquiera de al menos un par de docenas de épocas diferentes . Una de las épocas más populares se conoce comúnmente como Tiempo Unix , utilizando el momento UTC de 1970 que mencionó.

Si bien es popular, el 1970 de Unix Time puede no ser el más común. También en el plazo más común sería el 0 de enero de 1900 para innumerables hojas de cálculo de Microsoft Excel y Lotus 1-2-3, o el 1 de enero de 2001 utilizado por el marco Cocoa de Apple en más de mil millones de máquinas iOS / macOS en todo el mundo en innumerables aplicaciones. ¿O quizás el 6 de enero de 1980 utilizado por dispositivos GPS ?

Muchas granularidades

Diferentes sistemas utilizan granularidad diferente en el recuento del tiempo.

Incluso el llamado "Tiempo Unix" varía, con algunos sistemas contando segundos enteros y algunos contando milisegundos . Muchas bases de datos como Postgres usan microsegundos . Algunos, como el framework java.time moderno en Java 8 y posterior, usan nanosegundos . Algunos usan aún otras granularidades.

ISO 8601

Debido a que hay tanta variación en el uso de una referencia de época y en las granularidades, generalmente es mejor evitar los momentos de comunicación como un conteo desde la época. Entre la ambigüedad de la época y la granularidad, más la incapacidad de los humanos para percibir valores significativos (y, por lo tanto, perder los valores con errores), use texto sin formato en lugar de números.

El ISO 8601 proporciona un amplio conjunto de formatos prácticos y bien diseñados para expresar valores de fecha y hora como texto. Estos formatos son fáciles de analizar por máquina, así como también fáciles de leer por humanos en todas las culturas.

Éstas incluyen:

Basil Bourque
fuente
-10

Respuesta corta: ¿por qué no?

Respuesta más larga: el tiempo en sí mismo realmente no importa, siempre y cuando todos los que lo usen estén de acuerdo con su valor. Como 1/1/70 ha estado en uso durante tanto tiempo, usarlo hará que el código sea lo más comprensible posible para la mayor cantidad de personas posible.

No hay un gran mérito en elegir una época arbitraria para ser diferente.

PaulJWilliams
fuente
37
Debido a que Unix se desarrolló en 1969 y se lanzó por primera vez en 1971, era razonable suponer que ninguna máquina tendría que representar una hora del sistema anterior a 1970-01-01-00: 00: 00.
Jörg W Mittag el
3
Como desarrollador de juegos de simulación históricos, parece bastante tonto que los diseñadores de algunos objetos de tiempo tiendan a asumir que todos los programas solo querrán representar fechas en el futuro o en el pasado reciente. Por supuesto, podemos programar nuestras propias representaciones, o trabajar en un factor de ajuste, pero aún así.
Dronz
8
El mismo problema anterior a la época se aplica a usos "prácticos" que no son de juegos, como hojas de cálculo comerciales, presentación de datos científicos,
IU de
77
@Dronz Debe tener en cuenta que esto fue diseñado para una computadora de $ 72000 con 9KB de RAM que usaba transistores y diodos para puertas lógicas como CPU (¡sin chips en ese momento!). Entonces no fue "tonto" hacer lo más básico que funcionó.
Camilo Martin
2
OP es correcto en un nivel meta, los esquemas que desarrollamos por tiempo siempre han sido bastante arbitrarios. El número de días en un año, el número de días en el mes, el año "0" y las reglas para el año de saltos son ... locos. Cada sistema es solo una serie de compromisos malos porque fue lo mejor que pudieron hacer con la tecnología disponible y funcionó lo suficientemente bien para su caso de uso inmediato. Lo cual es cierto para todos los proyectos de ingeniería
:)