online normal milisegundos fecha convertir shell unix-timestamp leap-second

shell - normal - fecha unix online



Tiempo Unix y segundos intercalares (2)

Con respecto al tiempo de Unix (POSIX), Wikipedia dice:

Debido a su manejo de segundos intercalares, no es una representación lineal de tiempo ni una representación real de UTC.

Pero el comando de date Unix no parece ser consciente de ellos en realidad

$ date -d ''@867715199'' --utc Mon Jun 30 23:59:59 UTC 1997 $ date -d ''@867715200'' --utc Tue Jul 1 00:00:00 UTC 1997

Si bien debe haber un segundo Mon Jun 30 23:59:60 UTC 1997 allí en Mon Jun 30 23:59:60 UTC 1997 .

¿Significa esto que solo el comando date ignora los segundos intercalares, mientras que el concepto de tiempo Unix no?


Es fácil trabajar con Unix, pero algunas marcas de tiempo no son tiempos reales, y algunas marcas de tiempo no son tiempos únicos.

Es decir, hay marcas de tiempo duplicadas que representan dos segundos diferentes en el tiempo, porque en el tiempo de Unix el sexagésimo segundo podría tener que repetirse (ya que no puede haber un sesenta y uno segundo). Teóricamente, también podrían ser brechas en el futuro porque el sexagésimo segundo no tiene que existir, aunque hasta el momento no se han emitido segundos intercalados.

Justificación del tiempo de Unix: está definido para que sea fácil trabajar con él. Agregar soporte para segundos intercalares a las bibliotecas estándar es muy complicado. Por ejemplo, quiere representar el 1 de enero de 2050 en una base de datos. ¡Nadie en la tierra sabe cuántos segundos de esa fecha está en UTC! La fecha no puede almacenarse como una marca de tiempo UTC, porque la IAU no sabe cuántos segundos intercalares tendremos que agregar en las próximas décadas (son tan buenos como aleatorios). Entonces, ¿cómo puede un programador fechar la aritmética cuando el tiempo que transcurrirá entre dos fechas cualquiera en el futuro no se conoce hasta un año o dos antes? El tiempo de Unix es simple: ya conocemos la marca de tiempo del 1 de enero de 2050 (es decir, 80 años * # de segundos en un año). Es extremadamente difícil trabajar con UTC durante todo el año, mientras que el tiempo Unix es difícil de trabajar en el instante en que ocurre un segundo intercalar.

Por lo que vale, nunca he conocido a un programador que esté de acuerdo con los segundos intercalares. Deben ser claramente abolidos.


La cantidad de segundos por día se fija con las Wikipedia .

El número de tiempo de Unix es cero en la época de Unix, y aumenta exactamente 86400 por día desde la época.

Por lo tanto, no puede representar segundos intercalares. El sistema operativo ralentizará el reloj para adaptarse a esto. Los segundos intercalares simplemente no existen en lo que respecta a las marcas de tiempo de Unix.