¿Por qué se calculan las fechas del 1 de enero de 1970?

¿Hay alguna razón para usar la fecha (1 de enero de 1970) como estándar por defecto para la manipulación del tiempo? He visto este estándar en Java, así como en Python. Soy consciente de estos dos idiomas. ¿Hay otros idiomas populares que siguen el mismo estándar?

Por favor describa.

Es el estándar del tiempo de Unix.

El tiempo Unix, o tiempo POSIX, es un sistema para describir puntos en el tiempo, definido como el número de segundos transcurridos desde la medianoche del Tiempo Universal Coordinado (UTC) del 1 de enero de 1970, sin contar los segundos de salto.

usando la fecha (1 de enero de 1970) como estándar por defecto

La pregunta hace dos suposiciones falsas:

  • Todo el seguimiento del tiempo en la computación se realiza como un recuento desde 1970.
  • Tal seguimiento es estándar.

Dos docenas de épocas

El tiempo en la computación no siempre se registra desde principios de 1970 UTC . Si bien esa época es popular, varios entornos informáticos a lo largo de las décadas han utilizado al menos casi dos docenas de épocas . Algunos son de otros siglos. Van desde el año 0 (cero) hasta el 2001.

Aquí hay algunos.

0 de enero, 1 aC

1 de enero, 1 d.

15 de octubre de 1582

1 de enero de 1601

31 de diciembre de 1840

17 de noviembre de 1858

30 de diciembre de 1899

31 de diciembre de 1899

1 de enero de 1900

1 de enero de 1904

31 de diciembre de 1967

1 de enero de 1980

6 de enero de 1980

1 de enero de 2000

1 de enero de 2001

Unix época común, pero no dominante

El comienzo de 1970 es popular, probablemente debido a su uso por parte de Unix. Pero de ninguna manera es eso dominante. Por ejemplo:

  • Innumerables millones (¿miles de millones?) De documentos de Microsoft Excel y Lotus 1-2-3 utilizan January 0, 1900 (31 de diciembre de 1899).
  • El mundo ahora tiene más de mil millones de dispositivos iOS / OS X que utilizan la época Cocoa (NSDate) del 1 January 2001, GMT .
  • El sistema de navegación satelital GPS utiliza January 6, 1980 mientras que la alternativa europea Galileo usa el 22 August 1999 .

ISO 8601

Suponiendo que un conteo desde la época está usando la época de Unix está abriendo una gran vulnerabilidad para los errores. Tal cuenta es imposible para que un humano la descifre instantáneamente, por lo que los errores o problemas no se marcarán fácilmente durante la depuración y el registro. Otro problema es la ambigüedad de la granularidad que se explica a continuación.

En su lugar, sugiero encarecidamente que se serialicen valores de fecha y hora como cadenas ISO 8601 inequívocas para el intercambio de datos en lugar de un número entero desde la época: YYYY-MM-DDTHH:MM:SS.SSSZ como 2014-10-14T16:32:41.018Z .

Cuenta de lo que desde la época

Otro problema con el seguimiento del tiempo de cuenta desde la época es la unidad de tiempo, con al menos cuatro niveles de resolución comúnmente utilizados.

  • Segundos
    Las instalaciones originales de Unix utilizaron segundos enteros, lo que llevó al problema del año 2038 cuando alcanzamos el límite de segundos desde 1970 si se almacenan como un entero de 32 bits.
  • Milisegundos
    Usado por bibliotecas Java más antiguas, incluida la clase java.util.Date y la biblioteca Joda-Time .
  • Microsegundos
    Utilizado por bases de datos como Postgres .
  • Nanosegundos
    Utilizado por el nuevo paquete java.time en Java 8.

Diagrama que muestra diferentes programas de conteo de épocas por segundos, milisegundos, microsegundos o nanosegundos.

El 1 de enero de 1970, 00:00:00 am es el punto cero del tiempo POSIX .

¿Hay alguna razón para usar la fecha (1 de enero de 1970) como estándar para la manipulación del tiempo?

No hay razón que importe.

El módulo de time de Python es la biblioteca de C. Pregúntale a Ken Thompson por qué eligió esa fecha para una cita de época. Tal vez fue el cumpleaños de alguien.

Excel utiliza dos épocas diferentes. ¿Alguna razón por la cual diferentes versiones de excel usan fechas diferentes?

Excepto por el progtwigdor real, nadie más sabrá por qué se tomaron esos tipos de decisiones.

Y…

No importa por qué se eligió la fecha. Simplemente fue.

Los astrónomos usan su propia fecha de época: http://en.wikipedia.org/wiki/Epoch_(astronomy)

¿Por qué? Se debe elegir una fecha para hacer que las matemáticas funcionen. Cualquier fecha aleatoria funcionará.

Una fecha lejana en el pasado evita los números negativos para el caso general.

Algunos de los paquetes más inteligentes usan el proleptico año gregoriano 1. ¿Alguna razón por la que el año 1?
Hay una razón dada en libros como Cálculos calendáricos: es matemáticamente un poco más simple.

Pero si lo piensas bien, la diferencia entre 1/1/1 y 1/1/1970 es solo 1969, una compensación matemática trivial.

P) “¿Por qué las fechas se calculan a partir del 1 de enero de 1970?”

A) Tenía que ser lo más reciente posible, sin embargo, incluir algún pasado. Probablemente no hubo ninguna otra razón importante ya que muchas personas sienten lo mismo.

Sabían que planteaba un problema si lo colocaban demasiado lejos en el pasado y sabían que daba resultados negativos si era en el futuro. No había necesidad de profundizar en el pasado, ya que lo más probable es que los eventos tengan lugar en el futuro.

Notas: Los mayas, por otro lado, tenían la necesidad de ubicar eventos en el pasado, ya que tenían el conocimiento de muchos pasados, para los cuales hicieron un calendario a largo plazo. Sólo para colocar todos los fenómenos de rutina en el calendario.

La marca de tiempo no fue pensada como un calendario, es una época. Y creo que los mayas hicieron su calendario a largo plazo utilizando la misma perspectiva. (lo que significa que sabían muy bien que no tenían ninguna relación con el pasado, solo tenían la necesidad de verlo en una escala más grande)

por qué es siempre el 1 de enero de 1970, porque – ‘1 de enero de 1970’, generalmente llamada “fecha de época” es la fecha en que comenzó la hora de las computadoras Unix, y esa marca de tiempo se marca como ‘0’. En cualquier momento desde esa fecha se calcula en función del número de segundos transcurridos. En palabras más simples … la marca de tiempo de cualquier fecha será la diferencia en segundos entre esa fecha y el ‘1 de enero de 1970’ La marca de tiempo es solo un número entero que comenzó desde el número ‘0’ en ‘Medianoche del 1 de enero de 1970’ y continúa aumentando por ‘1’ como cada segundo paso Para la conversión de las marcas de tiempo de UNIX a fechas legibles, PHP y otros idiomas de código abierto proporcionan funciones integradas.

Sí, C (y su familia). Aquí es donde Java lo tomó también.