内容转载自我的博客

文章目录

  • 时间标准
  • 闰秒
  • TAI、GPST、UTC换算
  • 时区划分
  • UTC时间转本地时间(东八区)
  • 本地时间(东八区)转UTC
  • GPS时间转UTC时间
  • UTC时间转GPS时间

时间标准

  • 格林尼治标准时间GMT(Greenwich Mean Time):它是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,因为本初子午线被定义为通过那里的经线。自1924年2月5日开始,格林尼治天文台负责每隔一小时向全世界发放调时信息。格林尼治标准时间的正午是指当平太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治平时基于天文观测本身的缺陷,已经被原子钟报时的协调世界时(UTC)所取代
  • 世界时UT(Universal Time):它是一种以格林威治子夜起算的平太阳时。世界时是以地球自转为基准得到的时间尺度,其精度受到地球自转不均匀变化和极移的影响,为了解决这种影响,1955年国际天文联合会定义了UT0、UT1和UT2三个系统:UTO表示未经改正的世界时,UT1表示经过极移改正的世界时,UT2表示进一步经过地球自转速度的季节性改正后的世界时
  • 国际原子时TAI(International Atomic Time):英语简称为IAT,法语简称为TAI,最终使用法语简称TAI。它是根据秒的定义(1秒为铯-133原子基态两个超精细能级间跃迁辐射振荡9192631770周所持续的时间)的一种国际参照时标,是均匀的时间尺度,与地球的空间位置不关联,起点为1958年1月1日0时0分0秒。随着时间的迁延,TAI和UT1两种时间尺度的时间差越来越大。为此,在UT1和TAI之间进行协调,这就产生了协调世界时UTC
  • 协调世界时UTC(Coordinated Universal Time):它是最主要的世界时间标准,基于国际原子时,并通过不规则的加入闰秒来抵消地球自转变慢的影响。它又称为世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。协调世界时(UTC)是世界上调节时钟和时间的主要时间标准,是最接近格林威治标准时间(GMT)的几个替代时间系统之一。对于大多数用途来说,UTC时间被认为能与GMT时间互换。人们对该时间系统进行过数次调整,直到1972年引入了闰秒机制,调整工作得以简化。闰秒在必要的时候会被插入到UTC中,以保证协调世界时(UTC)与世界时(UT1)相差不超过0.9秒
  • Unix或POSIX时间戳:它是UNIX或类UNIX系统使用的时间表示方式。一般定义为从协调世界时(UTC时间)1970年1月1日0时0分0秒起至现在的总秒数(10位是精确到秒,13位是精确到毫秒)。考虑到闰秒的话,更精确的定义为从协调世界时(UTC时间)1970年1月1日0时0分0秒起至现在经过闰秒调整之后的总秒数
  • GPS时间:它是GPS原子时,它的时间基准是1980年1月6日0时0分0秒与世界协调时刻UTC相一致,以后按原子时TAI秒长累积计时。GPS时间跟UTC时间之差为秒的整倍数(因为UTC比TAI慢,而GPS是按照TAI来计时的,所以UTC也比TAI慢)。如1989年为5秒,1996年为11秒,2002年为13秒,到现在2020年08月为止为18秒。

闰秒

它是在协调世界时(UTC)中增加或减少一秒,使它与平太阳时贴近所做调整。需要闰秒的部分原因是因为平均太阳日(mean solar day)的长度正以非常缓慢的速度增加中,另一个原因是原子钟赋予秒固定的时间长度。而当两者结合时,就已经比当时的太阳时的秒短少了一点点。时间现在是以稳定的原子钟来测量(TAI或国际原子时),因为地球自转有着许多的变数,所以以前的秒定义(地球绕着轴自转和绕太阳的公转,以平均太阳日的1/86400来定义)被废除。当要增加正闰秒时,这一秒是增加在第二天的00:00:00之前,效果是延缓UTC第二天的开始。当天23:59:59的下一秒被记为23:59:60,然后才是第二天的00:00:00。如果是负闰秒的话,23:59:58的下一秒就是第二天的00:00:00了,但目前还没有负闰秒调整的需求
Leap_Second.dat可以查看每次闰秒的时间和第几次闰秒,主要内容如下:

#    MJD        Date        TAI-UTC (s)
#           day month year
#    ---    --------------   ------
#41317.0    1  1 1972       1041499.0    1  7 1972       1141683.0    1  1 1973       1242048.0    1  1 1974       1342413.0    1  1 1975       1442778.0    1  1 1976       1543144.0    1  1 1977       1643509.0    1  1 1978       1743874.0    1  1 1979       1844239.0    1  1 1980       1944786.0    1  7 1981       2045151.0    1  7 1982       2145516.0    1  7 1983       2246247.0    1  7 1985       2347161.0    1  1 1988       2447892.0    1  1 1990       2548257.0    1  1 1991       2648804.0    1  7 1992       2749169.0    1  7 1993       2849534.0    1  7 1994       2950083.0    1  1 1996       3050630.0    1  7 1997       3151179.0    1  1 1999       3253736.0    1  1 2006       3354832.0    1  1 2009       3456109.0    1  7 2012       3557204.0    1  7 2015       3657754.0    1  1 2017       37

TAI、GPST、UTC换算

根据文件Leap_Second.dat可以得知,截止2020年08月:
TAI = UTC + 37
由于GPST从1980年1月6日0时0分0秒开始计时,所以1980年1月1日及以前的闰秒不考虑,则:
GPST = UTC + 18
另外,leapsecond可以查看实时的UTC、GPST、TAI时间

时区划分

时区是指地球上的某一个区域使用同一个时间定义。GMT时间或者UT时间,都是表示地球自转速率的一种形式。从太阳升起到太阳落下,时刻从0到24变化。这样,不同经度的地方时间自然会不相同。为了解决这个问题,人们把地球按经度划分为不同的区域,每个区域内使用同一个时间定义,相邻的区域时间差为1个小时。时区又分为理论时区和法定时区

  • 理论时区:按经度,每15°为一个时区,将地球划分为24个时区,以本初子午线为中心,向东西两侧各延伸7.5°的区域为0时区
  • 法定时区:法定时区是在理论时区的基础上,根据某些地区的国界线做了调整之后的时区。为实际使用的时区。例如中国横跨东五区到东九区五个时区,但统一使用东八区时间(北京时间)
  • 时差:某个地方的时刻与0时区的时刻差称为时差,时差东正西负。以本初子午线为中心,每向东一跨过一个时区,时刻增加一个小时,每向西跨过一个时区,时刻减少一个小时
  • 国际日期变更线:大体以180度经线为日界线。当自西向东穿过日期变更线时,日期需要减少一天,反之,日期增加一天

UTC时间转本地时间(东八区)

根据此代码,修改最后一行fromtimestamp(timestamp, timezone(timedelta(hours=8)))即可实现UTC转不同时区

from datetime import datetime, timedelta, timezone# UTC时间转本地时间(北京)时间
# 1. 把utc的str转为datetime(无时区信息)
# 2. 添加时区信息为utc时区
# 3. datetime转为时间戳
# 4. 从时间戳得到本地时间datetime
# 输入格式为:'2020-08-05 02:03:03.815650'
# 输出格式为:datetime.datetime(2020, 8, 5, 10, 3, 3, 815650)
def utc_to_local(utc_time):datetimeformat = "%Y-%m-%d %H:%M:%S.%f"# 得到不包含时区的datetimedt_no_tz = datetime.strptime(utc_time, datetimeformat)# 设置时区为UTC# timezone.utc与timezone(timedelta(hours=0))一样utc_datetime = dt_no_tz.replace(tzinfo=timezone(timedelta(hours=0)))t = utc_datetime.timestamp()# 根据时间戳得到UTC时间# datetime.utcfromtimestamp(t)# 如果要将时间戳转化为东八区datetime# fromtimestamp(timestamp, timezone(timedelta(hours=8)))# 根据时间戳得到本地时间fromtimestamp(t, tz=None)return datetime.fromtimestamp(t)

本地时间(东八区)转UTC

根据此代码,修改replace(tzinfo=timezone(timedelta(hours=8)))即可实现某个时区转UTC时间

from datetime import datetime, timedelta, timezone# 本地时间转UTC时间
# 输入格式为:'2020-08-05 10:03:03.815650'
# 输出格式为:datetime.datetime(2020, 8, 5, 2, 3, 3, 815650)
def local_to_utc(local_time):datetimeformat = "%Y-%m-%d %H:%M:%S.%f"# 得到不包含时区的datetimedt_no_tz = datetime.strptime(local_time, datetimeformat)# 设置时区为本地时区(北京,东八区)# timezone.utc与timezone(timedelta(hours=0))一样local_datetime = dt_no_tz.replace(tzinfo=timezone(timedelta(hours=8)))t = local_datetime.timestamp()# 根据时间戳得到UTC时间return datetime.utcfromtimestamp(t)

GPS时间转UTC时间

将GPS时间转换为UTC时间

from datetime import datetime, timedelta# 闰秒
LEAP_SECONDS = 18# 输入:GPS周、GPS周内秒、闰秒(可选,gps时间不同,闰秒值也不同,由Leap_Second.dat文件决定)
# 输出:UTC时间(格林尼治时间)
# 输入示例: gps_week_seconds_to_utc(2119, 214365.000)
# 输出示例: '2020-08-18 11:32:27.000000'
def gps_week_seconds_to_utc(gpsweek, gpsseconds, leapseconds=LEAP_SECONDS):datetimeformat = "%Y-%m-%d %H:%M:%S.%f"epoch = datetime.strptime("1980-01-06 00:00:00.000", datetimeformat)# timedelta函数会处理seconds为负数的情况elapsed = timedelta(days=(gpsweek*7), seconds=(gpsseconds-leapseconds))return datetime.strftime(epoch+elapsed, datetimeformat)

UTC时间转GPS时间

将UTC时间转换为GPS时间

from datetime import datetime, timedelta# 闰秒
LEAP_SECONDS = 18# 输入:UTC时间(datetime类型)
# 输出:GPS周、周内日、周内秒、毫秒
def utc_to_gps_week_seconds(utc, leapseconds=LEAP_SECONDS):datetimeformat = "%Y-%m-%d %H:%M:%S.%f"epoch = datetime.strptime("1980-01-06 00:00:00.000", datetimeformat)tdiff = utc - epoch + timedelta(seconds=leapseconds)gpsweek = tdiff.days // 7gpsdays = tdiff.days - 7*gpsweekgpsseconds = tdiff.seconds + 86400*(tdiff.days -7*gpsweek)return gpsweek, gpsdays, gpsseconds, tdiff.microseconds

常用的几种时间系统GMT、UTC等以及使用Python代码GPS时间转UTC时间相关推荐

  1. python获取系统当前时间并转utc时间为绝对秒数_用Python将datetime.date转换为UTC时间戳...

    如果d = date(2011, 1, 1)在世界协调时:>>> from datetime import datetime, date>>> import cal ...

  2. 基于深度学习的鸟类检测识别系统(含UI界面,Python代码)

    摘要:鸟类识别是深度学习和机器视觉领域的一个热门应用,本文详细介绍基于YOLOv5的鸟类检测识别系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面.在界面中可以选择各种鸟类图 ...

  3. 基于深度学习的人脸性别识别系统(含UI界面,Python代码)

    摘要:人脸性别识别是人脸识别领域的一个热门方向,本文详细介绍基于深度学习的人脸性别识别系统,在介绍算法原理的同时,给出Python的实现代码以及PyQt的UI界面.在界面中可以选择人脸图片.视频进行检 ...

  4. 室友吃个泡面的时间,我用十几行Python代码下载了几千张手机壁纸

    手机壁纸电脑壁纸,对于广大男性同胞来说,最喜欢的不就是好看的么,十几行代码分分钟就下载一大堆,用都用不完,来吧,展示! 人生苦短 - 我用Python 一.工善欲其事,必先利其器 1.开发环境 2.第 ...

  5. 环形文字拉直的两种方法:极坐标转换和薄板样条插值python代码示例

    目录 引言 极坐标转换 方案一: 方案二: 薄板样条插值法 引言 针对环形文字识别,通过这几天调研,一般有两种方法,一是极坐标转换:二是薄板样条插值(TPS)法. 极坐标转换 方案一: 代码来源:Se ...

  6. GNSS原理与应用(三)——坐标系统与时间系统

    目录 1.前言 2.坐标系统 2.1天球坐标系 2.1.1天球基本概念 2.1.2岁差与章动 2.1.3天球坐标系的组成与分类 2.1.4天球坐标系为什么"稳定"? 2.2地球坐标 ...

  7. python解题时间_1小时还是30秒?Python给你的另一种数据处理选择

    原标题:1小时还是30秒?Python给你的另一种数据处理选择 引子 想象一下,你每周都要手动重复同一过程,比如从多个来源复制数据并粘贴到一个电子表格中,用于后续处理.这项任务可能每周都需要花费一两个 ...

  8. 时间系统以及各GNSS系统时间的转换关系

    时间系统 恒星时和太阳时都是以地球自转作为时间基准(或时间频率基准)的,区别在于量测自转时所选取的参考点不同. 恒星时 以春分点作为参考点.由于地球自转使春分点连续两次经过地方上子午圈的时间间隔为一恒 ...

  9. 优化Python代码的4种方法

    介绍 作为数据科学家,编写优化的Python代码非常非常重要.杂乱,效率低下的代码即浪费你的时间甚至浪费你项目的钱.经验丰富的数据科学家和专业人员都知道,当我们与客户合作时,杂乱的代码是不可接受的. ...

最新文章

  1. 集成Lucene和HBase(转)
  2. MapReduce-流量统计求和-排序-Mapper和Reducer编写
  3. 睡眠 应该用 a加权 c加权_在神经网络中提取知识:学习用较小的模型学得更好...
  4. 洛谷P1014 [NOIP1999 普及组] Cantor 表
  5. 这就是深度学习如此强大的原因
  6. bash历史命令数_如何使用Bash历史记录命令
  7. Python对象序列化-Pickle模块
  8. C++设计模式——Composite 组合模式
  9. 台达编码器型号含义_编码器型号说明 编码器型号大全 编码器型号选型
  10. 关于HRESULT判断的宏(SUCCEEDED/FAILED)
  11. 《初级会计电算化实用教程(金蝶KIS专业版)》一1.5 课后习题
  12. 思科模拟器路由器配置
  13. 基于微信小程序的驾校考试系统设计与实现毕业设计毕设开题报告参考
  14. \t\t长痘痘(鼻尖,脸上等部位)的原因,应该怎么办?
  15. qq2009 好像和金山词霸屏幕取词有冲突
  16. 河北大学计算机学院赵润,影视编导
  17. access有效性规则不为空值_access窗体文本框有效性规则中输入is not null无效
  18. HDUOJ1234开门人和关门人
  19. 基于FPGA的图像处理之幂律(伽马校正)变化
  20. pixhawk 模拟飞行

热门文章

  1. 微软的奥尔良项目简介
  2. DIV布局 旅游出行网站设计——武汉旅游(11页) HTML+CSS+JavaScript dreamweaver作业静态HTML网页设计模板
  3. 华奥安心延保对代码的敬畏之心
  4. 使用Vlookup筛选数据
  5. Mysql 5.7.30-winx64 解压版安装教程
  6. python c++情侣网名是什么意思_网友:c++与Python,究竟谁才是大哥?
  7. 14、Spring Clou14——路由配置细节
  8. linux安装教程以及使用时遇到的问题和解决方法
  9. 吉他的那些事-----------------吉他零基础入门
  10. Vue中使用把汉字转化为拼音字母