我正在机器上使用ubuntu 18.04。我的ntp配置为使用gpsd作为源。 gpsd提供的时间不考虑leap秒,但NTP会对其进行调整,并为UTC提供已调整的leap秒。因此,我的系统时钟将通过NTP同步到UTC。根据文档,std::chrono::system_clock::now
提供的时间是1970年以来的,并且不算leap秒。我的问题是,当我们称此为内核时,内核会调整leap秒吗?或者从std::chrono::system_clock::now
查询的时间实际上包含来自NTP的相同时间,并且已调整了leap秒。
system_clock
和NTP都以相同的方式“处理” leap秒。插入a秒时,时间只是停止。这里我说的是时间标准,而不是任何特定的实现。
在a秒插入过程中,NTP的实现可能不会停止一整秒钟。相反,它可能会在it秒插入之前和之后的几个小时内延迟几分之一秒,这样所有延迟的总和就是一秒钟。这被称为“ le秒涂片”。
因此您可以说 几乎system_clock
和NTP都忽略leap秒,因为如果这些系统中有两个时间点t0
和t1
,并且t0
引用了a秒插入之前的时间,并且[ C0]引用了该leap秒插入之后的时间,然后表达式t1
给出的结果不对插入的leap秒进行计数。结果比实际发生的物理秒数少1。GPS卫星以与t1-t0
和NTP完全不同的方式“忽略” leap秒。 GPS的“时钟”一直在tick秒间滴答作响,