函数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