Cesium时间系统

目录

1.时间系统

1.1几种时间系统

1.2几种时间之间的相互转换

1.3儒略日的计算

1.4JulianDate的结构和计算


1.时间系统

Cesium中,使用JulianDate模块来处理儒略日的计算,具体为Cesium软件包目录中的文件:"\Source\Core\JulianDate.js"。

1.1几种时间系统

UTC(coordinated universal time),也称协调时间时。也就是我们现在日常使用的时间。

TAI(International Atomic Time),也称原子时。

DAT 跳秒,或者闰秒,是UTC和TAI之间的差别。

TT(terrestrial time),或者为TDT,也称地球动力学时。

UT1(Universal Time1),也称格林威治平太阳时,在UT0的基础上加入了极移修正。是以地球自转为基准得到的,也是目前使用的世界时标准。

1.2几种时间之间的相互转换

1.3儒略日的计算

儒略日(Julian day,JD)是指由公元前4713年1月1日,协调世界时中午12时开始所经过的天数,当然这个天数是包含小数点的。显然,儒略日使用自然累加的天数作为时间的计时方式,是一种均匀流逝的绝对时间。

儒略日的计算涉及到闰年、闰月的处理,计算公式各种程序语言版本的都有。读者可参考书籍中的算法》

注意,儒略日的计算公式只涉及到年月日时分秒的计算,并不管是UTC还是TAI时间。当是TAI时间时,则计算得到的儒略日是正确的;而当是UTC时间时,因为有跳秒的存在,计算得到的儒略日就是“假的”,因此需要主动加上跳秒。

例如:

UTC时间:2020年9月5日12:00:00s,对应的TAI时间为2020年9月5日12:00:37s。

因为我们知道,自2017年1月1日00:00:00s,跳秒为37s。

所以说,给定UTC时间,在转换为TAI时间时,必须知道跳秒数,即前面提到的D A T DATDAT。

Cesium中,JulianDate模块中,维护了历次跳秒的时刻及跳秒数的数表(见下),在计算UTC向TAI转换时,需要查这个表,以便判断对应的跳秒数。

1.4JulianDate的结构和计算

Cesium中,使用JulianDate模块包含了相关的计算函数。

可以使用构造函数可以创建一个JulianDate对象,对象内部仅包含两个属性,且仅对应TAI时间:

dayNumber: 保留儒略日的整数部分,单位为天;

secondsOfDay:保留儒略日的小数部分,单位为秒;

之所以用两个参数来表示儒略日,是为了最大可能的保证数据的精度。例如J2000时刻,儒略日为2451545天。光整数天就需要7位有效数字,如果表示到1ms的精度,则儒略日为:2451545.00000001天,可以看出超出了一般双精度15位有效数字。因此使用内部使用整数天和不足一天的秒数来保存,从而保证了儒略日数据的精度。

其中,timeStandard表示时间类型,只有两种选择:UTC和TAI。没有则默认为UTC。当为UTC类型时,构造函数内部需要将UTC时间转换为TAI时间(涉及到跳秒数表的查询)。

其它的构造函数有:JulianDate.fromGregorianDate、JulianDate.fromDate等。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘海折柳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值