用Python实现GPS周和周内秒转换为UTC时间

 网上找了一些GPS周和周内秒的计算方法,其非常复杂,包括了使用儒略日等等一些相对来说比较复杂。本文用Python内置的库进行计算,pyrhon的datetime模块自动根据日期和时间计算出对应的闰年等。

from datetime import datetime, timedelta

def gps_to_utc(gps_week, gps_seconds):
    # GPS周起始时间
    gps_epoch = datetime(1980, 1, 6)

    # 计算GPS周对应的总天数
    total_days = gps_week * 7

    # 计算GPS秒对应的时间差, GPS时间与UTC时间在秒上相差18秒
    time_difference = timedelta(days=total_days, seconds=gps_seconds-18)

    # 计算UTC时间
    utc_time = gps_epoch + time_difference

    return utc_time

def utc_to_gps(utc_time):
    # GPS周起始时间
    gps_epoch = datetime(1980, 1, 6)

    # 计算时间差
    time_difference = utc_time - gps_epoch

    # 计算总秒数
    total_seconds = time_difference.total_seconds()

    # 计算GPS周数和周内秒
    gps_week = int(total_seconds // (7 * 24 * 3600))
    gps_seconds = int(total_seconds % (7 * 24 * 3600))

    return gps_week, gps_seconds

def main():
    # 示例:将GPS周数和周内秒转换为UTC时间
    gps_week = 2293
    gps_seconds = 0

    utc_time = gps_to_utc(gps_week, gps_seconds)
    print(f"GPS Week: {gps_week}, GPS Seconds: {gps_seconds}")
    print(f"UTC Time: {utc_time}")

    # 示例:将UTC时间转换为GPS周数和周内秒
    gps_week_result, gps_seconds_result = utc_to_gps(utc_time)
    print(f"Converted GPS Week: {gps_week_result}, Converted GPS Seconds: {gps_seconds_result}")

if __name__ == "__main__":
    main()

 运行结果:

GPS Week: 2100, GPS Seconds: 345600
UTC Time: 2020-04-08 23:59:42
Converted GPS Week: 2100, Converted GPS Seconds: 345582

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值