Является ли clock gettime временем UTC или местным часовым поясом?

выполняет функции clock_gettime вернуть метку времени, измеренную от эпохи в UTC или в локальном часовом поясе?

Я знаю, что time должен быть из эпохи UTC, но я не могу найти ссылки, говорящей, что то же самое верно для clock_gettime.

3 ответов


чтобы процитировать Википедию, эпоха Unix-это определена as

время 00:00:00 UTC 1 января 1970 года (или 1970-01-01T00:00:00Z ISO 8601).

из этого следует, что любая ссылка на "эпоху" подразумевает UTC.


на самом деле, вопрос не имеет большого смысла. См.времени(7) для обзора функций, связанных со временем.

любой прибор часов возвращает время измеренное от некоторого события начала в прошлом. Соглашение Unix (и Posix) заключается в том, чтобы измерить его из эпохи (начало 1970 года, как экс-ы объясняет).

показывать некоторое время в UTC, или по местному времени, или с помощью французского революционного календаря, или использование календаря майя или любого другого календаря из любой культуры, которая вас интересует, не изменяет это время. Изменяется только отображение (или показанная форма) этого времени.

это как сказать, что два, deux, 1+1 или 2, или 10b-с b значение binary - все представления то же самое количество.

вернемся к вопросу, man страница системах дает точный ответ на вопрос. Это зависит от clk_id вы просите, и для CLOCK_REALTIME, время измеряется с эпохи Unix. Для других часов (например,CLOCK_MONOTONIC), используемый источник не указан.

(Я довольно печально удивлен количеством вопросов здесь, на которые можно было бы ответить очень быстро, заглянув в человек. Я не понимаю логику людей, которые тратят больше времени, чтобы задать вопрос. вот что посмотреть-просто набрав man clock_gettime на их Linux box - в man-страницы).

понятие часового пояса актуально только для struct tm как возвращено местное время & gmtime (и сопутствующие) функции. Время (например, некоторые time_t) измеряется от эпохи (как результат времени(2), gettimeofday, clock_gettime С CLOCK_REALTIME) не имеет часового пояса.

эпоха Unix-01 января 1970 0: 00 UTC (по определению (time_t)0), в моем часовом поясе (MET= Париж/Франция) та же эпоха-ЧТ 1 января 01:00:00 MET 1970.


Это зависит..

Если вы называете clock_gettime(1), вероятно, эпоха-это время, когда ваш linux запустился.