热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

从Ubuntu上的UTC时间计算Unix时间

我在机器上使用ubuntu18.04。我的ntp配置为使用gpsd作为源。gpsd提供的时间不考虑leap秒

我在机器上使用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的实现可能不会停止一整秒钟。相反,它可能会在a秒插入之前和之后的几个小时内延迟几分之一秒,从而使所有延迟之和为一秒。这就是所谓的“ le秒涂片”。

因此,您可以说system_clock和NTP都忽略leap秒,因为如果这些系统中有两个时间点t0t1并且t0引用了一个a秒插入之前的时间,而t1引用leap秒插入之后的时间,则表达式t1-t0给出的结果不计算插入的leap秒。结果比实际发生的物理秒数少1。

GPS卫星以与system_clock和NTP完全不同的方式“忽略” leap秒。 GPS的“时钟”一直持续tick秒,几乎完全忽略了它们。但是,即使在那个星期的UTC插入了leap秒,GPS周也总是精确地为604,800秒(86,400 * 7)。

因此,要将GPS周(和一周中的GPS时间)转换为UTC,必须知道自GPS时代(1980年1月的第一个星期日)以来插入的of秒总数。我相信gpsd在为您提供UTC时间点时会为您完成这种转换。


推荐阅读
author-avatar
Vee-健健健
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有