2012-07-20 16 views
5

De acuerdo con la primera edición Unix Programmer's Manual, tiempo de Unix se define como "el tiempo desde 00:00:00, 1 de enero 1971, medido en sexagésimos de un segundo"¿Cuándo se revisó el tiempo de época de Unix desde 1971 hasta el valor actual de 1970?

Cuando hizo este cambio a su valor actual de la medianoche (UTC), 1 de enero de 1970?

+0

posible duplicado de [¿Por qué es 1/1/1970 el "tiempo de época"?] (Http://stackoverflow.com/questions/1090869/why-is-1-1-1970-the-epoch-time) – ephemient

+1

El artículo vinculado y Wikipedia no dicen CUÁNDO cambió la época, así que haré el sacrificio. Recuerde, usted lo pidió! El momento en que cambió la época fue de 0 años, 0 meses, 0 días, 0 horas, 0 minutos y 0 segundos después del comienzo de la época que cambió la época. –

+0

Oh, acabo de notar que el avatar de Andrew es apropiado. Sucedió en poco tiempo. –

Respuesta

6

En la Primera edición de Unix (noviembre de 1971), el manual page for the time system call declaró que devolvió "el tiempo desde 00:00:00, 1 de enero de 1971, medido en sexagésimas de segundo". Este era un valor de 32 bits, por lo que incluso si se trata como sin firmar, solo podría rastrear alrededor de 2,26 años más allá de esta fecha. Sin embargo, la página del manual y source code comments describen la llamada del sistema como "obtener la hora del año", el año no puede ser set y el comando date y la función ctime() (utilizada para formatear la fecha y hora) no formatearon un año o incluso funcionan correctamente con valores de tiempo superiores a 1 año, por lo que probablemente se esperaba que la fecha se restableciera manualmente cada año y el año 1971 en la página del manual tuviera poca importancia. Bueno, excepto por el pequeño problema de que 1972 tiene un día extra; con respecto a eso, un note se agregó más adelante a la sección de errores: "La rutina se debe reensamblar para el año bisiesto". Bonito.

En 1972, la página del manual para la llamada del sistema de tiempo era changed para indicar que devolvió el tiempo desde "00:00:00, 1 de enero de 1972", con la nota: "El tiempo se almacena en 32 bits Esto garantiza una crisis cada 2.26 años ".

En la cuarta edición de Unix (noviembre de 1973) the time system call se cambió para devolver "el tiempo desde las 00:00:00 GMT, 1 de enero de 1970, medido en segundos". (La página del manual está fechada el 5 de agosto de 1973, por lo que puede haber sido cuando los cambios se hicieron originalmente.) Esta es esencialmente la definición actual, excepto que el término histórico GMT ha sido reemplazado por el más preciso Tiempo Universal Coordinado y se han hecho aclaraciones con respecto a los segundos intercalares. En los sistemas que devuelven esto como un número de 32 bits firmado, esto funcionará hasta el year 2038. Afortunadamente, muchos sistemas ahora usan 64 bits para este valor.

Cuestiones relacionadas