从ubuntu上的utc时间开始计算unix时间

问题描述 投票:0回答:1

我正在机器上使用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秒。

c++ ntp gpsd
1个回答
0
投票

system_clock和NTP都以相同的方式“处理” leap秒。插入a秒时,时间只是停止。这里我说的是时间标准,而不是任何特定的实现。

在a秒插入过程中,NTP的实现可能不会停止一整秒钟。相反,它可能会在it秒插入之前和之后的几个小时内延迟几分之一秒,这样所有延迟的总和就是一秒钟。这被称为“ le秒涂片”。

因此您可以说system_clock和NTP都忽略leap秒,因为如果这些系统中有两个时间点t0t1,并且t0引用了a秒插入之前的时间,并且[ C0]引用了该leap秒插入之后的时间,然后表达式t1给出的结果不对插入的leap秒进行计数。结果比实际发生的物理秒数少1。GPS卫星以与t1-t0和NTP完全不同的方式“忽略” leap秒。 GPS的“时钟”一直在tick秒间滴答作响,

几乎

完全忽略了它。但是,即使在该周的UTC中插入了leap秒,GPS周也总是精确地为604,800秒(86,400 * 7)。因此要将GPS周(和GPS周时间)转换为UTC,必须知道自GPS时代(1980年1月的第一个星期日)以来插入的leap秒总数。我相信gpsd在为您提供UTC时间点时会为您完成这种转换。

© www.soinside.com 2019 - 2024. All rights reserved.