当前位置: 首页 > 面试题库 >

如何从Python中的GPS取消分段时间获取当前日期和时间

宁卓
2023-03-14
问题内容

我有这样的GPS分段时间:

Tgps = 1092121243.0

我想知道那是什么日期和时间。GPS时间开始于1980年1月6日。Python函数

datetime.utcfromtimestamp

从1970年1月1日起可以秒数。

我发现以下内容:

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)

我不确定leap秒是否包含在函数datetime中,还是应该计算它们并从结果中减去?可能还会存在这个问题的更好解决方案吗?


问题答案:

GPS时间与UTC同步开始1980-01-06 (UTC) == 1980-01-06 (GPS)。两者都以秒为单位计时。GPS时间和UTC时间之间的时差随着(插入)leap秒的增加而增加。

要找到正确的UTC时间,您需要知道在给定GPS时间之前发生的of秒数:

#!/usr/bin/env python
from datetime import datetime, timedelta

# utc = 1980-01-06UTC + (gps - (leap_count(2014) - leap_count(1980)))
utc = datetime(1980, 1, 6) + timedelta(seconds=1092121243.0 - (35 - 19))
print(utc)

输出量

2014-08-15 07:00:27 # (UTC)

leap_count(date)给定日期之前引入的of秒数。在TAI-UTC表中(请注意:该网站是leap秒的权威来源。它发布了公告C并宣布了新的leap秒):

1980..: 19s 
2012..: 35s

因此:

(leap_count(2014) - leap_count(1980)) == (35 - 19)

如果您使用的是Unix,则可以使用"right"时区从TAI时间获取UTC时间(并且很容易从GPS时间获取TAI时间:TAI = GPS +
19秒(恒定偏移量)
):

#!/usr/bin/env python
import os
import time

os.environ['TZ'] = 'right/UTC' # TAI scale with 1970-01-01 00:00:10 (TAI) epoch
time.tzset() # Unix

from datetime import datetime, timedelta

gps_timestamp = 1092121243.0 # input
gps_epoch_as_gps = datetime(1980, 1, 6) 
# by definition
gps_time_as_gps = gps_epoch_as_gps + timedelta(seconds=gps_timestamp) 
gps_time_as_tai = gps_time_as_gps + timedelta(seconds=19) # constant offset
tai_epoch_as_tai = datetime(1970, 1, 1, 0, 0, 10)
# by definition
tai_timestamp = (gps_time_as_tai - tai_epoch_as_tai).total_seconds() 
print(datetime.utcfromtimestamp(tai_timestamp)) # "right" timezone is in effect!

输出量

2014-08-15 07:00:27 # (UTC)

如果您从相应的中提取seconds秒列表,则可以避免更改时区tzfile(5)。它是前两种方法的组合,其中自动使用第一种方法的跃点计数计算,并使用第二种方法的自动更新tzdata(tz数据库的系统软件包):

>>> from datetime import datetime, timedelta
>>> import leapseconds
>>> leapseconds.gps_to_utc(datetime(1980,1,6) + timedelta(seconds=1092121243.0))
datetime.datetime(2014, 8, 15, 7, 0, 27)

其中leapseconds.py可以从提取闰秒/usr/share/zoneinfo/right/UTC文件(的一部分tzdata封装)。

这三种方法均产生相同的结果。



 类似资料:
  • 问题内容: 如何使用Java获取当前日期和时间? 我正在寻找与C#等效的东西。 问题答案: 只需构造一个没有任何参数的新对象即可;这会将当前日期和时间分配给新对象。 在的话的Javadoc的无参数的构造函数: 分配一个Date对象并对其进行 初始化,以便它表示分配它的时间( 以最近的毫秒为单位)。 确保您使用的不是-后者没有零参数构造函数,并且语义有所不同,这是完全不同的对话的主题。:)

  • 本文向大家介绍python获取当前日期和时间的方法,包括了python获取当前日期和时间的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python获取当前日期和时间的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 问题内容: 是否可以在手动查询中使用诸如DATETIME之类的值或命令来插入当前日期和时间? 末尾引用的DATETIME值是我要添加当前日期和时间的位置。 问题答案: 您可以使用:

  • 问题内容: 刚从操场开始。我正在尝试创建一个简单的应用程序。 我创建了一个这样的日期对象: 我如何获得当前时间?在其他语言中,我可以执行以下操作: 但是我找不到像这样的任何属性/方法。我找到了一种方法。我应该用那个吗?如果是这样,怎么办? 问题答案: Swift 3更新: 我这样做: 在Objective-c中看到相同的问题,如何从NSDate获得小时和分钟?与Nate的答案相比,您将获得一个数字

  • 问题内容: 我有一个可在JavaScript中显示当前日期和时间的脚本,但这始终是错误的。这是代码: 它应该打印并打印 有什么帮助吗?谢谢 问题答案: 返回一个从零开始的数字,以便获得正确的月份,您需要将其加1,因此调用in可能会返回而不是。 因此,在您的代码中,我们可以用来输出正确的值。此外: 返回月中的某天 < -这是您想要的*那一天 * 是对象的单独方法,它将返回代表星期几(0-6)等的整数

  • 问题内容: 要插入到列中。我正在使用 数据库。我的问题是: SQL中有可用的功能吗?或者 它取决于实现,因此每个数据库对此都有自己的功能? MySQL中可用的功能是什么? 问题答案: 完整答案: 1. SQL中有可用的功能吗? 是的,SQL 92规范,97年10月,第pg。171第6.16节指定了以下功能: 2.它是依赖于实现的,因此每个数据库对此都有自己的功能吗? 每个数据库都有其自己的实现,但