datetime - long - por qué la marca de tiempo de Unix para la misma hora es diferente en diferentes zonas horarias
timestamp to date javascript (3)
¿Por qué 7/18/2013 11:33
es diferente en la zona horaria GMT y en mi zona horaria local (Asia / Kolkata)? Como el sello de tiempo de Unix son los ticks que se calculan desde el tiempo de la época 1/1/1970 00:00:00 GMT
así que sé que allí el tiempo de época se había producido en diferentes intervalos en diferentes zonas horarias, pero aún así. el número de segundos transcurridos debería haber sido el mismo
Por ejemplo, si I (+5: 30 GMT) y Mi amigo (+5: 00 GMT) comienzan a contar los ticks desde 00:00 Hrs, respectivamente, entonces a las 18:00 Hrs en los dos husos horarios de la zona horaria deberían ser los mismos. Entonces, ¿por qué no ocurre lo mismo con el sello de tiempo de Unix?
Necesidad de entender el concepto completamente.
Por ejemplo, si I (+5: 30 GMT) y Mi amigo (+5: 00 GMT) comienzan a contar los ticks desde 00:00 Hrs, respectivamente, entonces a las 18:00 Hrs en los dos husos horarios de la zona horaria deberían ser los mismos.
No, porque ambos comienzan a contar a partir de las 00:00 UTC . Esa es la definición. Entonces para usted, eso significará el número de tics desde las 18:30, y para su amigo significará la cantidad de tics desde las 19:00.
La idea es que un solo instante en el tiempo tenga el mismo valor de marca de tiempo en todas partes. Entonces, si te llamara ahora (e ignorases los retrasos telefónicos) podríamos acordar que "ahora" es una marca de tiempo Unix de 1374130418. Es posible que tengas una hora local diferente a la mía, pero podemos expresar "ahora" en un formato común.
Consulte la sección "conceptos básicos" de la guía del usuario de Noda Time para obtener más información sobre el tiempo local frente al tiempo "global".
Cuando su sistema está configurado correctamente, la marca de tiempo de Unix le muestra los tics desde el 1.1.1970 en Greenwich. Entonces, cuando un amigo suyo lee la marca de tiempo a las 18:00 a la hora local, lo hace con 30 minutos de retraso y, por lo tanto, tiene una diferencia de 1800 segundos.
Si este no es el caso, uno o ambos relojes del sistema no están configurados correctamente para usar GMT como base. Por lo general, este tipo de problema no tiene un impacto negativo siempre y cuando solo esté trabajando en un sistema o todos los sistemas estén configurados incorrectamente de la misma manera.
La hora de Unix se da como segundos desde la época : la cantidad de segundos (sin contar los segundos intercalares) que han transcurrido desde 00:00:00 Hora universal coordinada (UTC) o el jueves 1 de enero de 1970,
El comando de date
GNU tiene algunas características muy agradables que le permiten traducir entre diferentes formatos de tiempo. Esto se explica muy bien en la man date
así que solo le daré algunos ejemplos aquí:
### "Normal" format
$ date
Thu Jun 12 11:44:23 CEST 2014
### Unix time
$ date +%s
1402566271
Para convertir, puede dar una fecha específica a la fecha usando el indicador -d
. Sin embargo, para obtener una fecha de Unix, esta debe ser una fecha completa. No puede convertir las 3:00 PM a tiempo de Unix ya que el tiempo de Unix se refiere a una fecha completa (año, mes, día, hora). Entonces, por ejemplo, para obtener la fecha de Unix para el 12 de septiembre de 1987, harías:
$ date -d "3 PM 12 September 1987" +%s
558450000
Y para convertir eso a una fecha "normal":
$ date -d "@558450000"
Sat Sep 12 15:00:00 CEST 1987