¿Las marcas de tiempo de Unix cambian a través de las zonas horarias?


136

Como pregunta el sujeto; Cómo cambian las marcas de tiempo UNIX en cada zona horaria?

Por ejemplo, si envié una solicitud a otro correo electrónico al otro lado del mundo diciendo: "Enviar un correo electrónico cuando sea la hora 1397484936" , ¿la marca de tiempo del otro servidor estaría 12 horas por detrás de la mía?


77
No, es la cantidad de segundos que han pasado desde un punto específico en el tiempo.
Niklas B.

Respuestas:


228

La definición de marca de tiempo UNIX es independiente de la zona horaria. La marca de tiempo es el número de segundos (o milisegundos) transcurridos desde un punto absoluto en el tiempo, la medianoche del 1 de enero de 1970 en hora UTC. (UTC es la hora media de Greenwich sin ajustes de horario de verano). Independientemente de su zona horaria, una marca de tiempo representa un momento que es el mismo en todas partes. Por supuesto, puede convertir de ida y vuelta a una representación de zona horaria local (la hora 1397484936 es tal y tal hora local en Nueva York, o alguna otra hora local en Yakarta) si lo desea.

El artículo en http://en.wikipedia.org/wiki/Unix_time es bastante impresionante si desea una lectura más larga.


19
En mi otra vida soy instructor de vuelo. Usamos UTC (también conocido como "hora Zulu") para los tiempos de despegue y aterrizaje, de modo que la diferencia entre los tiempos es una medición precisa de la duración del vuelo, sin tener que considerar en qué zona horaria se encuentran los aeropuertos de inicio y finalización. De hecho, tomé vuelos que comenzaron en horario de verano y terminaron después, o viceversa.
RobP

19
+1 a esta respuesta. Para agregar una idea que podría ayudar a aclarar: la marca de tiempo en sí no es UTC, la marca de tiempo es un número de (mili) segundos pasados ​​desde un punto de referencia en el tiempo. El punto de referencia para la marca de tiempo de Unix (la época de Unix) es el que es UTC: 00:00:00 UTC 1970.01.01
Sandman

44
Aprovechando la respuesta de @Sandman, 1397484936 segundos desde el comienzo es solo eso, 1397484936 segundos. Sin entrar en otra ciencia, han transcurrido 1397484936 segundos en ese punto en todo el mundo. Cuando han transcurrido los segundos 1397484936 podría ser PM:16:00 4 en Nueva York, 9 PM/21:00 en Londres, que es la hora local zonas
conrad10781

1
@RobP Eso no es cierto. UNIX no es independiente de la zona horaria, usted mismo lo dijo in UTC time. Hay dos desplazamientos, a raw offsety DST offset. Por ejemplo, America/New_Yorkel desplazamiento sin formato es -18000, y el desplazamiento DST es 3600, por lo que desde cualquier marca de tiempo UNIX debe hacer los cálculos UNIX + offset + dstOffsetpara obtener la marca de tiempo de Nueva York.
Max

15

El tiempo de Unix se define como el número de segundos que han transcurrido desde las 00:00:00 hora universal coordinada ( UTC ), jueves 1 de enero de 1970. Entonces, la respuesta es no


5

SI ambas computadoras están configuradas correctamente con sus relojes configurados para la zona horaria correcta y los valores UTC, deben devolver el mismo valor.
Por supuesto que es un gran IF. Es casi seguro que habrá una diferencia de al menos un segundo, más a menudo minutos entre el tiempo informado por dos computadoras. Y muchas computadoras están configuradas para tener una configuración de zona horaria incorrecta e informarán su hora local cuando se les solicite una marca de tiempo en lugar de UTC.

Y en eso radica la diferencia entre teoría y práctica. En teoría, es todo lo mismo, en la práctica nunca debes confiar en él.


3

Las marcas de tiempo de Unix no cambian entre zonas horarias , se crean con el fin de tener una hora estándar en todo el mundo.

NOTA: - Las marcas de tiempo se calculan en función de la hora actual en la computadora, por lo tanto, no confíe en ellas hasta ya menos que esté muy seguro de la configuración de hora en las máquinas participantes.


3

Alguien declaró que "UTC es la hora de Greenwich sin ajustes de horario de verano". Esto es simplemente falso. GMT no tiene horario de verano. GMT se mide en Greenwich, Inglaterra (en el Obeservatorio Naval) [0 longitud, pero no 0 latitud]. UTC se mide en el ecuador [longitud 0 y latitud 0, que se encuentra en el océano frente al costo de África].

¿Qué diferencia hace? No hace una diferencia en términos de "¿qué hora del día es?" Sin embargo, sí hace una diferencia en términos de cálculo de un año. Ahora pensarías que un año se mediría según la ubicación del centro (el núcleo) de la tierra, ¿verdad? Cuando el núcleo de la Tierra está de vuelta en la misma ubicación que hace ~ 365 días, ha pasado un año. No se mide de esa manera. Se mide por una ubicación específica en la tierra que regresa a la misma ubicación (en relación con el sol) que hace ~ 365 días. Pero el período de un día y un año no se divide equitativamente. Una vez que la Tierra vuelve a estar donde estaba hace un año, la Tierra no está orientada en la misma dirección que el año pasado, por lo que ese lugar en la Tierra no está orientado en la misma dirección que hace un año. Siendo más al norte, Greenwich no va a volver al mismo lugar (en relación con el sol) que el año pasado al mismo tiempo que 0 Lat / 0 Long. Entonces, si basa la definición en Greenwith vs. 0/0, obtendrá una respuesta, aunque ligeramente diferente, a la pregunta "cuántos días hay en un año". Para decirlo de otra manera, cuando un lugar determinado en la tierra vuelve a donde estaba hace un año (en relación con el Sol), el núcleo de la tierra no está en el mismo lugar que estaba hace un año, entonces, ¿qué lugar eliges las cosas porque el núcleo de la tierra estará en un lugar diferente (en relación con el sol) que hace un año, si eliges un lugar diferente en la tierra. aunque ligeramente, diferente respuesta a la pregunta "cuántos días hay en un año". Para decirlo de otra manera, cuando un lugar determinado en la tierra vuelve a donde estaba hace un año (en relación con el Sol), el núcleo de la tierra no está en el mismo lugar que estaba hace un año, entonces, ¿qué lugar eliges las cosas porque el núcleo de la tierra estará en un lugar diferente (en relación con el sol) que hace un año, si eliges un lugar diferente en la tierra. aunque ligeramente, diferente respuesta a la pregunta "cuántos días hay en un año". Para decirlo de otra manera, cuando un lugar determinado en la tierra vuelve a donde estaba hace un año (en relación con el Sol), el núcleo de la tierra no está en el mismo lugar que estaba hace un año, entonces, ¿qué lugar eliges las cosas porque el núcleo de la tierra estará en un lugar diferente (en relación con el sol) que hace un año, si eliges un lugar diferente en la tierra.

Ni UTC ni GMT tienen horario de verano. Hora de Europa / Londres, la zona horaria en la que reside Greenwich. Pero GMT no. GMT es lo que los estadounidenses llamarían una "hora estándar", es decir, sin horario de verano.

Volviendo a la pregunta, el tiempo de época técnicamente no tiene una zona horaria. Se basa en un punto particular en el tiempo, el cual se alinea con un tiempo UTC "par" (al comienzo exacto de un año y una década, etc.). Si ese concepto no encaja bien en su cerebro, y si ayuda a pensar que el tiempo de Época está en UTC, continúe. Estás en buena compañía y en el gran esquema de las cosas, realmente no importa. Alguna vez has visto esas demandas judiciales en las que se le otorga $ 1 a somoene. Es una especie de veredicto de "tienes razón, pero realmente no importa". Si alguien lo demandara por decir que la hora de la época está en la zona horaria UTC, ganaría $ 1. Eso no les compraría una taza de café en ningún Starbucks en ninguna zona horaria del planeta.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.