Python时间到GPS时间转换器的UTC时间

时间:2017-05-31 03:09:43

标签: 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

2 个答案:

答案 0 :(得分:2)

从UNIX时间中减去315964782。

GPS时间从1980年1月5日开始.UNIX时间从1970年1月1日开始。它们只是有不同的起点,或Epochs。这两个时期之间的差异是这两个日期 PLUS 18 GPS闰秒(到目前为止)之间的秒数。

正如其他人所说,随着地球的旋转逐渐减慢,会定期添加GPS leap seconds

  

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

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

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

但是:

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

如果您尝试转换自星期开始的" GPS时间",那么您还需要知道要转换的当前GPS week number" GPS时间周期&# 34;到UTC。

ublox设备报告一些修正信息,其时间戳为"自星期开始以来的GPS毫秒数。" This NeoGPS file显示了自周开始以来#34; GPS毫秒之间转换的几种方法"和UTC。

答案 1 :(得分:-1)

怎么样:

import datetime
datetime.datetime.fromtimestamp(int("1284101485")).strftime('%B-%Y-%d %H:%M:%S')