只需从UNIX时间中减去315964782。
GPS时间从1980年1月5日开始。UNIX时间从1970年1月1日开始。它们只是具有不同的起点,即Epochs。这两个信号出现时间之间的差的这两个日期之间的秒数
PLUS 18 GPS闰秒(迄今为止)。
正如其他人指出的那样,随着地球自转逐渐变慢,GPS
leap秒会定期添加。
我们是否必须在每次the秒发生时(例如,下一个2018年,2019年…)手动更新我们的源代码?有什么可行的方法可以防止此问题?
许多设备都有一条消息,指示有效的GPS秒的“当前”秒数。我的C ++
NeoGPS库有一个示例程序,该程序向ublox设备请求当前的GPS秒数(此处定义为二进制消息)。有关NAV-
TIMEGPS消息的更多信息,请参见ublox NEO-xx规格。
其他制造商可能拥有自己的协议和消息,以获取当前的GPS leap秒。
然而:
大多数GPS设备以UTC报告时间,并且已经包括the秒。除非您使用基于一周开始(周日午夜)的GPS时间,否则您无需知道GPS leap秒。
如果您尝试从“自周开始的GPS时间”转换,那么您还需要知道当前的GPS周编号,以将“周的GPS时间”转换为UTC。
ublox设备报告一些修复信息,其时间戳为“自一周开始以来的GPS毫秒”。
这个NeoGPS文件显示了几种在“星期几以来的GPS毫秒”和UTC之间进行转换的方法。



