Pido disculpas a
Patrick Mackenzie .
Danny preguntó ayer sobre datos curiosos sobre el tiempo de Unix, y recordé que a veces funciona de manera completamente intuitiva.
Estos tres hechos parecen ser extremadamente razonables y lógicos, ¿verdad?
- El tiempo de Unix es el número de segundos desde el 1 de enero de 1970 a las 00:00:00 UTC.
- Si espera exactamente un segundo, el tiempo de Unix cambiará exactamente un segundo.
- El tiempo de Unix nunca retrocede.
Todo esto no es cierto.
Pero no basta con decir "Todo esto no es cierto" sin explicar
por qué . Ver abajo para una explicación. Pero si quieres pensar por ti mismo, ¡no desplace el reloj!
Reloj de mesa de la década de 1770. Compilado por John Leroux. De la colección Wellcome . Publicado bajo CC BYLas tres falacias tienen una razón:
segundos intercalares . Si no está familiarizado con segundos adicionales, aquí hay una referencia rápida:
El tiempo UTC está determinado por dos factores:
- Hora atómica internacional : lecturas promedio de cientos de relojes atómicos en todo el mundo. Podemos medir un segundo por las propiedades electromagnéticas de un átomo, y esta es la medición de tiempo más precisa conocida por la ciencia.
- Tiempo universal , basado en la rotación de la Tierra alrededor de su propio eje. Un turno completo, un día.
El problema es que estos dos números no siempre coinciden. La rotación de la Tierra no es consistente: se está desacelerando gradualmente, por lo que el día en el Tiempo Universal se está alargando. Por otro lado, los relojes atómicos son endiabladamente precisos y constantes durante millones de años.
Cuando dos veces no se sincronizan, se agrega o elimina un segundo en UTC para restaurar la sincronización. Desde 1972, el servicio
IERS (que ejecuta este caso) ha agregado 27 segundos adicionales. El resultado fue 27 días de UTC con una duración de 86.401 segundos. Teóricamente, es posible la aparición de un día que dura 86 399 segundos (menos uno). Ambas opciones contradicen la suposición fundamental del tiempo Unix.
El tiempo de Unix supone que cada día dura exactamente 86,400 segundos (60 × 60 × 24 = 86,400), sin segundos adicionales. Si ocurre tal salto, entonces el tiempo de Unix salta después de un segundo, o contando dos segundos en uno. A partir de 2019, le faltan 27 segundos bisiestos.
Por lo tanto, nuestros errores deben complementarse de la siguiente manera:
- El tiempo de Unix es el número de segundos desde el 1 de enero de 1970 00:00:00 UTC menos segundos intercalares .
- Si espera exactamente un segundo, el tiempo de Unix cambiará exactamente un segundo si el segundo extra no se ha eliminado .
Hasta ahora, en la práctica, los segundos nunca se han eliminado (y una desaceleración en la rotación de la Tierra significa que esto es poco probable), pero si alguna vez sucediera, significaría que el día UTC fue un segundo más corto. En este caso, el último segundo de UTC (23:59:59) se descarta.
Cada día de Unix tiene la misma cantidad de segundos, por lo que el último segundo de Unix de un día acortado no corresponderá a ninguna hora UTC. Así es como se ve en intervalos de un cuarto de segundo:

Si comienza a las 23: 59: 58: 00 UTC y espera un segundo, la hora Unix avanzará dos segundos UTC, y la marca de tiempo Unix 101 no se asignará a nadie.
- El tiempo de Unix nunca puede retroceder hasta que se agregue un segundo adicional .
Esto ya ha sucedido 27 veces en la práctica. Al final del día, UTC agrega un segundo adicional 23:59:60. Los días de Unix tienen el mismo número de segundos, por lo que no puede agregar un segundo adicional; en su lugar, debe repetir las marcas de tiempo de Unix durante el último segundo. Así es como se ve en intervalos de un cuarto de segundo:

Si comienza a las 23: 59: 60.50 y espera medio segundo, el tiempo Unix regresa durante medio segundo, y la marca de tiempo Unix 101 corresponde a dos segundos de UTC.
Estas probablemente no sean las únicas rarezas del tiempo de Unix, justo lo que recordaba ayer.
El tiempo es una cosa
muy extraña.