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

edA*_*a-y 8 linux posix

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

我知道这time应该是来自UTC时代,但我找不到任何提到同样的说法clock_gettime.

NPE*_*NPE 15

引用维基百科,Unix Epoch 定义

世界于1970年1月1日00:00:00 UTC(或1970-01-01T00:00:00Z ISO 8601).

由此可见,对"时代"的任何提及都意味着UTC.


Bas*_*tch 6

实际上,这个问题没有多大意义.有关时间相关功能的概述,请参见时间(7).

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

以UTC或当地时间显示某些时间,或使用法国革命日历,或使用Maya日历,或您感兴趣的任何文化的任何其他日历,都不会改变时间.只有那个时间的显示(或显示的形式)会发生变化.

这有点像说两个,deux,1 + 1,或2,或10b- b表示二进制 - 都是相同数字的表示.

回到这个问题,clock_gettime手册页给出了问题的准确答案.这取决于clk_id你要求的,CLOCK_REALTIME因为自Unix时代以来测量的时间.对于其他时钟(例如CLOCK_MONOTONIC),未指定使用的原点.

(我很遗憾的是由可通过查看很快得到回答的问题在这里的数量感到惊讶的人.我不明白的人花更多的时间来这里问这个问题的逻辑通过键入看-只是 man clock_gettime在他们的Linux盒子 - 进入手册页).

时区的概念仅与本地时间和 (及相关)函数struct tm返回的相关.从Epoch测量的时间(例如一些)(如时间(2)的结果,gettimeofday,with )没有时区.gmtimetime_tclock_gettimeCLOCK_REALTIME

Unix Epoch是1970年1月1日0:00 UTC(根据定义(time_t)0),在我的时区(MET =巴黎/法国),相同的Epoch是Thu Jan 1 01:00:00 MET 1970.

  • 我的困惑恰恰来自阅读手册页.它只是说'Epoch`并没有给出定义,而时间清楚地表明了基于UTC的时代.在我的问题的两个部分中,我指出我正在测量_from_一段时间,所以我不明白这个问题是如何没有意义的. (2认同)