2 puntos por GN⁺ 2024-12-27 | 1 comentarios | Compartir por WhatsApp
  • Segundos desde la época

    • Se suele decir que el tiempo POSIX, o tiempo Unix, representa los segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00. Sin embargo, esto no es exacto. Por ejemplo, el tiempo POSIX para 2024-12-25 18:54:53 UTC es 1735152686, lo que en realidad es 29 segundos menor que los 1735152715 segundos efectivamente transcurridos.

    • El tiempo POSIX se deriva del Tiempo Universal Coordinado (UTC) en IEEE 1003.1. El estándar asume que cada día tiene exactamente 86,400 segundos. Pero en la práctica, la duración de un día no es de 86,400 segundos y cambia con el tiempo. Para ajustar esto, los astrónomos declaran periódicamente segundos intercalares en UTC.

  • Arqueología

    • El apéndice B de IEEE 1003 incluye una discusión interesante sobre los segundos intercalares. Cuando se publicó el estándar, ya se habían agregado 14 segundos intercalares desde el 1 de enero de 1970. Esos segundos intercalares se ignoran para facilitar el cálculo de diferencias de tiempo.

    • La mayoría de los sistemas consideran el tiempo como un valor que aumenta continuamente. Pero la mayoría de los sistemas no rastrean los segundos intercalares ni están sincronizados con una referencia horaria estándar. Por eso, exigir que los segundos desde la época representen con exactitud los segundos entre la época y el instante de referencia no resulta apropiado.

    • Una interpretación consistente de los segundos desde la época puede ser importante para cierto tipo de aplicaciones distribuidas. La acumulación de segundos intercalares es impredecible, y es probable que la cantidad de segundos intercalares desde la época siga aumentando.

  • Qué hacer en su lugar

    • Para calcular la duración entre dos eventos en una misma computadora, se debe usar CLOCK_MONOTONIC. Si no es necesario intercambiar tiempo POSIX con otros sistemas, se puede usar TAI, GPS o LORAN.

    • Si se necesita una alineación aproximada con el sistema de marcas de tiempo POSIX, los segundos intercalares pueden distribuirse a lo largo de una ventana de tiempo más amplia. Bibliotecas como qntm t-a-i admiten conversiones entre POSIX y TAI.

    • Hay esfuerzos en marcha para eliminar los segundos intercalares, con la esperanza de que eso se complete para 2035. Esto requerirá trabajo adicional para construir tablas de conversión para todo lo que use la suposición de “86,400 segundos por día”, pero hará mucho más simple preguntar cuántos segundos hay entre dos momentos. Al menos para los tiempos posteriores a 2035.

1 comentarios

 
GN⁺ 2024-12-27
Opiniones de Hacker News
  • Leí un libro de ciencia ficción llamado "A Deepness in the Sky". Me pareció interesante la mención de los segundos desde una época de referencia

    • La forma de medir el tiempo de los Qeng Ho era compleja, y comenzaban a contar los segundos desde el momento en que el ser humano puso por primera vez un pie en la Luna
    • El momento inicial en realidad era aproximadamente 15 millones de segundos después, y ese era el segundo 0 del sistema operativo de las primeras computadoras
  • Hay esfuerzos en marcha para eliminar los segundos intercalares, y esperan completarlo para 2035

    • El propósito de UTC es estar a una cantidad entera de segundos de TAI para aproximar el tiempo solar medio
    • Si no quieres seguir el MST, tendrías que cambiarte a TAI, y si UTC se aparta del MST, los segundos intercalares históricos dejarían de tener sentido
  • La "época UTC" moderna es el 1 de enero de 1972

    • A fines de 1971 hubo un salto irregular de 0.107758 segundos TAI, y después de eso se cambió para que la velocidad de los ticks de UTC coincidiera exactamente con la de TAI
    • El tiempo Unix de 1970 y 1971 en realidad no coincide con el tiempo UTC de ese período
  • Cada vez que leo sobre medición del tiempo aprendo algo nuevo

    • Pensaba que el tiempo Unix era la forma más simple de llevar el tiempo
    • Creía que no se aplicaban segundos intercalares, pero parece que no lo había pensado lo suficiente
  • Hace poco trabajé con código para VAX, o que corría sobre OpenVMS, y fue la primera vez que vi una época de referencia en 17 de noviembre de 1858

    • En el código estaba abstraído a la época Unix
  • Algunos puntos en el tiempo no se pueden representar con timestamps POSIX, y algunos timestamps POSIX no coinciden con el tiempo real

  • Creo que este artículo arruinó la Navidad

    • Los segundos deberían ser segundos desde la época de referencia, y no importa si se desvían del día solar
    • El convertidor entre segundos y época de referencia debería encargarse de las correcciones
  • Cuando guardo fechas en una base de datos, siempre las guardo como tiempo de época Unix, y la información de zona horaria la guardo por separado

    • Me pregunto si sería mejor guardar los timestamps en formato TAI y convertirlos a UTC cuando haga falta
    • Las zonas horarias son un concepto creado por humanos y se ajustan con el tiempo
    • Hay que basarse en tiempo absoluto y convertirlo al formato de hora local cuando sea necesario
  • Hace unos 10 años, en una conferencia, escuché que Google no usa segundos intercalares, sino que los distribuye entre segundos normales

    • Google modifica sus servidores NTP para repartir el segundo intercalar
  • Me pregunto si existe una forma de medir el tiempo que sea sincronizada y aumente de forma monótona