函數clock_gettime
是否返回從UTC或本地時區的歷元測量的時間戳?clock_gettime是UTC時間還是本地時區?
我知道time
應該是從UTC的時代,但我找不到任何引用說同樣是clock_gettime
如此。
函數clock_gettime
是否返回從UTC或本地時區的歷元測量的時間戳?clock_gettime是UTC時間還是本地時區?
我知道time
應該是從UTC的時代,但我找不到任何引用說同樣是clock_gettime
如此。
引述維基百科,Unix的時代是defined作爲
時間1970年1月1日(或1970-01-01T00:00:00Z ISO 8601)00:00:00 UTC 。
由此可見,對「時代」的任何引用都意味着UTC。
其實這個問題並沒有太大意義。有關與時間相關的功能的概述,請參見time(7)。
任何時鐘設備都會返回從過去某個來源事件開始測量的時間。 Unix(和Posix)約定是從Epoch(1970年開始,因爲aix's answer解釋)來測量它。
顯示一段時間(UTC)或本地時間,或使用法國革命日曆,或使用瑪雅,或者你有興趣在任何文化的任何其他日曆,不改變時間。只有當時的顯示(或顯示的形式)發生變化。
它有點像說,德塞夫勒,1 + 1,或,或10b - 附b意味着二進制是相同數目的所有表示。
回到問題,man page of clock_gettime給出了問題的確切答案。它取決於你要求的clk_id
,而對於CLOCK_REALTIME
,時間是從Unix Epoch開始測量的。對於其他時鐘(例如CLOCK_MONOTONIC
),未指定使用的原點。
(我很傷心地由可通過查看人很快得到回答的問題在這裏的數量感到驚訝。我不明白的人花更多的時間來提出這樣的問題在這裏,在邏輯看起來只要在他們的Linux機器上輸入man clock_gettime
進入手冊頁)。
時區的概念僅與struct tm
相關,由localtime & gmtime
(及相關)功能返回。從Epoch測量的時間(例如time_t
)(如time(2),gettimeofday,clock_gettime
與CLOCK_REALTIME
的結果)沒有時區。
UNIX新紀元是1970年1月1日0:00 UTC(由(time_t)0
定義),在我的時區(MET =巴黎/法國)在同一時代是週四1月1日01:00:00 MET 1970
它取決於..
如果你打電話給clock_gettime(1)
,很有可能,這個時代是你的linux開始的時候。
我不同意這個結論。絕對時間事件沒有時區。 – 2011-12-16 17:26:41
@BasileStarynkevitch:其實,我認爲我們兩人之間並不存在任何分歧。時區(UTC)只有在我們在某個特定地方表示參照當地日期/時間*的「絕對時間事件」時纔會發揮作用。 – NPE 2011-12-16 17:32:19