Python UTC 时间到 GPS 时间转换器

jac*_*kbk 3 python gps utc

我有一个格式为时间戳的 UTC 时间(纪元 Unix 时间),如下所示。
1496224620
(人类可读值:2017 年 5 月 31 日 09:57:00)

我需要将格式化为 Unix 时间的时间戳转换为 GPS 时间格式,如下所示。
1180259838
(人类可读值:2017 年 5 月 31 日 09:57:00)

我需要一个python程序(算法对我来说很好)将格式化为Unix时间的时间戳转换为格式化为GPS时间的时间戳。

有一个 PHP 程序可以这样做。我可以从 PHP 代码更改为 Python 代码,从而拥有自己的 Python 程序。但我认为还有一个简短的方法(Python 的内置函数)可以更有效地实现我的期望。
这是 PHP 程序的链接
https://www.andrews.edu/~tzs/timeconv/timealgorithm.html

sla*_*dev 5

只需从 UNIX 时间中减去 315964782。

GPS 时间从 1980 年 1 月 5 日开始。UNIX 时间从 1970 年 1 月 1 日开始。它们只是具有不同的起点或Epochs。这两个信号出现时间之间的差的这两个日期之间的秒数PLUS 18 GPS闰秒(迄今为止)。

正如其他人所指出的,随着地球自转逐渐减慢,GPS 闰秒会定期添加。

我们必须在每次闰秒发生时手动更新我们的源代码(例如下一个 2018 年、2019 年……)?有什么可行的方法可以防止这个问题吗?

许多设备都有一条消息,指示“当前”有效的 GPS 秒数。我的 C++ NeoGPS库有一个示例程序,它从 ublox 设备(此处定义的二进制消息)请求当前的 GPS 秒数。有关 NAV-TIMEGPS 消息的更多信息,请参阅 ublox NEO-xx 规范。

其他制造商可能有自己的协议和消息来获取当前的 GPS 闰秒。

然而:

大多数 GPS 设备以 UTC 时间报告时间,其中已包含闰秒。除非您使用基于一周开始(周日午夜)的 GPS 时间,否则您不需要知道 GPS 闰秒。

如果您尝试从“自一周开始以来的 GPS 时间”进行转换,那么您还需要知道当前的GPS 周数才能将“GPS 一周时间”转换为 UTC。

ublox 设备报告一些修复信息,其时间戳为“自一周开始以来的 GPS 毫秒数”。 这个 NeoGPS 文件显示了几种在“自一周开始以来的 GPS 毫秒数”和 UTC 之间转换的方法。