¿Hay alguna razón para usar la fecha (1 de enero de 1970) como estándar predeterminado para la manipulación del tiempo? He visto este estándar tanto en Java como en Python. Estos dos idiomas que conozco. ¿Hay otros lenguajes populares que sigan el mismo estándar?
Por favor describa.
java
python
programming-languages
Vijay Shanker Dubey
fuente
fuente
Respuestas:
Es el estándar de la hora Unix.
fuente
La Pregunta hace dos suposiciones falsas:
Dos docenas de épocas
El tiempo en informática no siempre se registra desde el comienzo de 1970 UTC . Si bien esa referencia de é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 2001.
A continuación se muestran algunos.
Unix Epoch Común, pero no dominante
El comienzo de 1970 es popular, probablemente debido a su uso por Unix. Pero de ninguna manera es tan dominante. Por ejemplo:
January 0, 1900
(31 de diciembre de 1899).1 January 2001, GMT
.January 6, 1980
mientras que la alternativa europea utiliza Galileo22 August 1999
.ISO 8601
Asumir que un conteo desde la época está usando la época de Unix abre una gran vulnerabilidad para los errores. Tal recuento es imposible de descifrar instantáneamente para un humano, por lo que los errores o problemas no se marcarán fácilmente al depurar y registrar. Otro problema es la ambigüedad de la granularidad que se explica a continuación.
Sugiero encarecidamente en su lugar serializar los valores de fecha y hora como cadenas ISO 8601 inequívocas para el intercambio de datos en lugar de un recuento de enteros desde la época:
YYYY-MM-DDTHH:MM:SS.SSSZ
como2014-10-14T16:32:41.018Z
.Cuenta de qué desde la época
Otro problema con el seguimiento del tiempo del recuento desde la época es la unidad de tiempo, con al menos cuatro niveles de resolución de uso común.
Las instalaciones originales de Unix usaban segundos enteros, lo que llevó al Problema del año 2038 cuando alcanzamos el límite de segundos desde 1970 si se almacena como un entero de 32 bits.
Usado por bibliotecas Java más antiguas, incluida la clase java.util.Date incluida y la biblioteca Joda-Time .
Usado por bases de datos como Postgres .
Usado por el nuevo paquete java.time en Java 8.
fuente
por qué siempre es el 1 de enero de 1970, porque - '1 de enero de 1970' normalmente llamado "fecha de época" es la fecha en la que comenzó la hora para las computadoras Unix, y esa marca de tiempo está marcada como '0'. Cualquier tiempo 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 1 de enero de 1970' y continúa incrementándose por '1' en cada segundo paso Para la conversión de marcas de tiempo de UNIX a fechas legibles PHP y otros lenguajes de código abierto proporcionan funciones integradas.
fuente
No hay razón que importe.
El
time
módulo de Python es la biblioteca C. Pregúntele a Ken Thompson por qué eligió esa fecha para una fecha histórica. Quizás fue el cumpleaños de alguien.Excel usa dos épocas diferentes. ¿Alguna razón por la cual una versión diferente de Excel usa fechas diferentes?
A excepción del programador real, nadie más sabrá nunca por qué se tomaron ese tipo 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 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 utilizan el año gregoriano proléptico 1. ¿Alguna razón por la cual el año 1?
Hay una razón dada en libros como Calendrical Calculations: matemáticamente es un poco más simple.
Pero si lo piensa bien, la diferencia entre 1/1/1 y 1/1/1970 es solo 1969, un desplazamiento matemático trivial.
fuente
El 1 de enero de 1970, 00:00:00 am es el punto cero del tiempo POSIX .
fuente
P) "¿Por qué se calculan las fechas a partir del 1 de enero de 1970?"
A) Tenía que ser lo más reciente posible, pero incluir algo del pasado. Lo más probable es que no haya otra razón significativa, ya que mucha gente siente lo mismo.
Sabían que planteaba un problema si lo colocaban demasiado en el pasado y sabían que daría resultados negativos si era en el futuro. No había necesidad de profundizar más en el pasado, ya que lo más probable es que los acontecimientos tengan lugar en el futuro.
Notas: Los mayas, en cambio, tenían la necesidad de colocar los eventos en el pasado, ya que tenían el conocimiento de mucho pasado, para lo cual hicieron un calendario a largo plazo. Solo para colocar todos los fenómenos rutinarios 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 usando esa 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 mayor)
fuente
Sí, C (y su familia). Aquí es donde Java también lo tomó.
fuente