gpt4 book ai didi

time - Unix 纪元和 GPS 纪元之间的刻度

转载 作者:行者123 更新时间:2023-12-02 00:07:37 28 4
gpt4 key购买 nike

Unix 时间纪元(1970 年 1 月 1 日)和 GPS 时间纪元(1980 年 1 月 6 日)之间的一秒刻度数是多少?

我从网络上的多个来源看到了多个答案。一个阵营声称答案是315964800,另一阵营声称答案是315964819。我一直以为是315964800,但现在不太确定了。

我刚刚发现我的软件基线在过去八年里一直使用 315964819。我很难理解当我们将嵌入式设备与其他设备集成时,为什么会出现 19 秒的延迟却没有人注意到。

我认为,无论是谁将 315964819 放入代码基线中,都一定是错误地使用了 TAI 偏移量(19 秒)。

据我了解,Unix 时间不包括闰秒,这对我来说意味着 315964800 是两个纪元之间的刻度数。然后我想到Unix时间是如何处理闰秒的。它只是在插入闰秒时重复滴答计数,并且在 1970 年到 1980 年间插入了 19 个闰秒……我开始怀疑重复的滴答是否重要。我不这么认为,但这段代码的历史中有人这么认为,而且它似乎有效......

总而言之,我即将改变这个产品黑暗时代的一个常数设置,这与时间有关,这对于平台来说很重要,从它曾经的样子到我认为更多的东西准确,我希望比我更有知识的人竖起大拇指。

有权威人士可以介入吗?

315964800 camp

315964819 camp

另请注意,我只是询问 Unix 纪元到 GPS 纪元。我很确定自从 GPS 历元正确覆盖以来我们已经有了闰秒。

最佳答案

您所说的不同值是由于将 1970 年到 1980 年的偏移量与闰秒混合所致。
正确的偏移值为 315964800 秒。

说明:

UTC 和 GPS 时间(平均)每 18 个月就会增加一秒的偏差。这称为闰秒,是在 UTC 时基中引入的,需要根据地球自转的变化进行调整。

GPS 时间未按闰秒调整。

目前(2013 年)有 16 秒的偏移:
GPS 时间-UTC = 16 秒

Unix 时间是一种时间格式而不是时间引用。它表示自 1.1.1970 UTC 以来的毫秒(或秒)数。理想情况下,您的系统时间通过时间服务器 (NTP) 与 UTC 同步。

要转换并获取偏移量,您应该使用固定偏移量:(6.1.1980 UTC - 1.1.1970 UTC)

然后将 GPS 的当前值与 UTC 偏差相加(当前为 16 秒)。例如,使该值可配置,或从 GPS 设备读取当前偏移(它们知道 UTC 和 GPS 时间之间的差异)

您所说的不同值是由于将 1970 年到 1980 年的偏移量与闰秒混合所致。不要这样做,单独处理它们。

这个java程序:

SimpleDateFormat df = new SimpleDateFormat();
df.setTimeZone(TimeZone.getTimeZone("UTC"));

Date x = df.parse("1.1.1970 00:00:00");
Date y = df.parse("6.1.1980 00:00:00");

long diff = y.getTime() - x.getTime();
long diffSec = diff / 1000;

System.out.println("diffSec= " + diffSec);

输出该值:

diffSec= 315964800

因此,这是 GPS 时间开始的 1.1.1970 UTC 和 6.1.1980 UTC 之间的正确偏移量。然后,您必须进一步修正自 1980 年 1 月 6 日以来引入的 16 秒,以计算当前 UTC 时间的 GPS 时间。

关于time - Unix 纪元和 GPS 纪元之间的刻度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20521750/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com