2011-12-16 25 views

Respuesta

13

Para citar Wikipedia, la Época Unix es defined como

la hora 00:00:00 GMT el 1 de enero 1970 (o 1970-01-01T00: 00: 00Z ISO 8601).

De esto se sigue que cualquier referencia a "La Época" implica UTC.

+0

No estoy de acuerdo con la conclusión. los eventos de tiempo absoluto no tienen zonas horarias. –

+1

@BasileStarynkevitch: En realidad, no creo que haya ningún desacuerdo entre nosotros dos. La zona horaria (UTC) solo entra en juego cuando expresamos ese "evento de tiempo absoluto" con referencia a la fecha/hora local * en un lugar en particular *. – NPE

6

En realidad, la pregunta no tiene mucho sentido. Consulte time(7) para obtener una descripción general de las funciones relacionadas con el tiempo.

Cualquier dispositivo de reloj devuelve un tiempo medido desde algún evento origen en el pasado. La convención de Unix (y Posix) es medirlo desde Epoch (comienzo de 1970, como explica aix's answer).

Viendo algún tiempo en UTC o local tiempo, o usando el calendario revolucionario francés, o el uso del calendario maya, o cualquier otro calendario de cualquier cultura le interesa, no cambia ese momento. Solo cambia la visualización (o forma mostrada) de ese momento.

que es un poco como decir que dos, deux, 1 + 1, o , o 10b -con b significa binary- son todas las representaciones de la mismo número.

Volviendo a la pregunta, el man page of clock_gettime da la respuesta precisa a la pregunta. Depende de la clk_id está solicitando, y por CLOCK_REALTIME, el tiempo se mide desde el Epoch Unix. Para otros relojes (por ejemplo, CLOCK_MONOTONIC), no se especifica el origen utilizado.

(estoy bastante sorprendido tristemente por el número de preguntas aquí que podría ser contestada muy rápidamente mirando en la hombre. No entiendo la lógica de las personas que toman más tiempo para hacer la pregunta aquí que a mira -solo escribiendo man clock_gettime en su caja Linux- en las páginas man).

La noción de zona horaria es sólo relevante para struct tm devuelto por localtime & gmtime (y relacionados) funciones. Un tiempo (por ejemplo, algunos time_t) medida desde el Epoch (como el resultado de time(2), gettimeofday, clock_gettime con CLOCK_REALTIME) no tiene ninguna zona horaria.

La Época Unix es enero 01, 1970 0:00 UTC (por definición de (time_t)0), En mi zona horaria (MET = París/Francia) la misma época es Jue Ene 1 01:00:00 MET 1970.

+2

Mi confusión proviene exactamente de leer la página man. Solo dice "Época" y no da ninguna definición, mientras que el tiempo muestra claramente la época como UTC. Y en ambas partes de mi pregunta indico que estoy midiendo _desde cierto tiempo, así que no veo cómo la pregunta no tiene sentido. –

+0

Lo sentimos, la Época no está basada en UTC. Como cualquier otro momento preciso. No puede decir que los eventos del 11/09/2001 en Año Nuevo suceden en UTC, simplemente sucedieron en un momento preciso (cuya representación en UTC no es la misma que su representación utilizando el calendario revolucionario francés). Insisto: ¡un evento de tiempo determinado no tiene zona horaria! Lo que puede decir es que la Época, representada en UTC, es 1970, 01 de enero a las 0:00. Utilizando el calendario revolucionario francés, la misma Época es 11 Nivôse y 178 (y olvidé cómo calcular la hora en París en ese momento). ¡Pero es el mismo evento de tiempo de Época! –

+0

Lo siento, quise decir en Nueva York (¡no en Año Nuevo!) –

0

depende ...

si llama al clock_gettime(1), es probable que la época sea cuando se inicia el linux.

Cuestiones relacionadas