clock_gettime是UTC时间还是本地时区?

函数clock_gettime是否返回从UTC或本地时区的历元测量的时间戳?

我知道time应该是来自UTC时代,但我找不到任何引用,说clock_gettime同样如此。

引用维基百科,Unix Epoch被定义为

1970年1月1日UTC时间00:00:00(或1970-01-01T00:00:00Z ISO 8601)。

由此可见,对“时代”的任何提及都意味着UTC。

其实这个问题没有什么意义。

任何时钟设备都会返回过去某个来源事件的时间。 Unix(和Posix)约定是从Epoch(1970年开始,如aix的答案解释)来衡量它。

用UTC或当地时间显示一些时间,或使用法国的革命日历,或者使用Maya日历,或任何其他感兴趣的文化日历,都不会改变这个时间。 只有当时的显示(或显示的形式)改变。

这有点像两个 deux1 + 1或者2 ,或者10b-带有b的二进制 – 都是相同数字的表示。

回到这个问题, clock_gettime的手册页给出了这个问题的确切答案。 它取决于你所要求的clk_id ,而对于CLOCK_REALTIME ,这个时间是从Unix Epoch开始测量的。 对于其他时钟(例如CLOCK_MONOTONIC ),未使用原点。

(我很惊讶地发现这里有很多问题,可以通过调查这个很快得到答案,我不明白人们花更多的时间来问这个问题的逻辑,只需要键入man clock_gettime他们的Linux机器上的man clock_gettime进入手册页)。

时区的概念只与localtime & gmtime (及相关)函数返回的struct tm相关。 从Epoch(如time(2) , gettimeofday , clock_gettimeCLOCK_REALTIME的结果)测量的时间(例如time_t )没有时区。

Unix时代是1970年1月1日0:00(根据(time_t)0 )的定义,在我的时区(MET =巴黎/法国)同一个时代是星期四1月1日01:00:00 MET 1970。

这取决于..

如果你调用clock_gettime(1) ,很可能,这个时代就是你的linux开始的时候。