我有这样的 gps 未分段时间:
Tgps = 1092121243.0
我想知道那是什么日期和时间。 GPS时间的开始是1980年1月6日。Python函数
datetime.utcfromtimestamp
可以给出从 1 January 1970 年开始的秒数。
我发现以下内容:
from datetime import datetime
GPSfromUTC = (datetime(1980,1,6) - datetime(1970,1,1)).total_seconds()
curDate = datetime.utcfromtimestamp(Tgps + GPSfromUTC)
Out[83]: datetime.datetime(2014, 8, 15, 7, 0, 43)
我不确定闰秒是否包含在函数 datetime 中,或者我应该计算它们并从结果中减去?可能还存在更好的解决这个问题的方法吗?
原文由 Anton Protopopov 发布,翻译遵循 CC BY-SA 4.0 许可协议
GPS 时间开始与 UTC 同步:
1980-01-06 (UTC) == 1980-01-06 (GPS)
。两者都以 SI 秒计。 GPS 时间和 UTC 时间之间的差异随着每个(闰秒)闰秒而增加。要找到正确的 UTC 时间,您需要知道给定 GPS 时间之前发生的闰秒数:
输出
其中
leap_count(date)
是在给定日期之前引入的闰秒数。来自 TAI-UTC 表(注意:该站点是闰秒的权威来源。它发布 公告 C 宣布新的闰秒):因此:
如果您使用的是 Unix,那么您可以使用
"right"
时区从 TAI 时间获取 UTC 时间(并且很容易从 GPS 时间获取 TAI 时间: TAI = GPS + 19 秒(常数偏移) ):输出
如果从相应的
tzfile(5)
中提取闰秒列表,则可以避免更改时区。它是前两种方法的组合,其中第一种方法的跳跃计数计算是自动化的,并且使用第二种方法的自动更新tzdata
( tz 数据库的 系统包):其中
leapseconds.py
可以从/usr/share/zoneinfo/right/UTC
文件中提取闰秒(tzdata
包的一部分)。所有三种方法产生相同的结果。