时间系统的分类
代码托管至github,链接见文后~
也可访问我的个人博客查看更多内容~
-
世界时
世界时(UT),这是由太阳的视运动定义的时间系统(比如太阳在头顶的时候就12点)。但是根据开普勒行星运动定律,太阳的运动速度不是均衡的,导致了“秒”的长度在发生变化,所以引入平太阳的概念,平太阳即其运动速度等于真太阳周年运动的平均速度,由此保证了时间的尺度没有发生变化。由平太阳的运动构成的时间系统称为世界时。
世界时可以分为UT0,UT1,UT2。UT0为未加任何改正的世界时,UT1是经过极移改正的世界时,UT2是在极移改正的基础上再改正了地球自转速度随季节的变化的世界时。即:
UT1 = UT0 + Δλ
UT2 = UT1 + ΔT通常所说的世界时是指UT1。
-
儒略日
儒略日(JD)是一种记录“天(day)”的时间系统。它的时间原点位于公元前4713年1月1日12:00(以世界时计算),以平太阳日连续计算,即算出来的是距离时间原点过了多少天。
由于儒略日数字很大,不便于使用,故减去一个常数得到约化儒略日(MJD)
MJD = JD - 2400000.5MJD的时间起点为1858年11月17日0:00。
儒略日的计算方法:
设待转换的历元为Y(年),M(Y),D(日),下面给出伪代码
if M == 1 or M == 2{ Y = Y - 1, M = M + 12 } A = int(Y / 100), B = 2 - A + int(A / 4) JD = int(365.25 * (Y + 4716)) + int(30.6001(M + 1)) + D + B - 1524.5 return JD
-
原子时
原子时(AT)是一种以原子谐振信号周期为标准,并对其进行连续计数的时标。原子时秒的定义为:在零磁场下,铯-133原子基态两个超精细能级间跃迁辐射9192631770周所持续的时间。
国际时间局通过比较、综合各地区的原子钟数据,确定了国际原子时(TAI),其时间原点在以UT2为参考的1958年1月1日0时0分0秒(实际上有0.0032s的偏差)
-
协调原子时
协调世界时(UTC),是目前生活中采用的时间系统,其定义为:以原子秒长为计量单位、在时刻上与平太阳时之差小于0.9秒的时间系统。也就是说,当平太阳时与协调世界时之差大于0.9秒时,协调世界时会被人为调快(慢)一秒,也称为闰秒。所以,协调世界时并不是一个连续的时间系统,这样的好处是保持了“正午是12点”的经验常识;如果不进行跳秒,随着地球自转速度逐渐变慢,可能现在所说的“正午”的时间会变为“傍晚”。
-
卫星定位时间系统
以GPS为例,GPS所采用的时间称为GPST,是一种建立在原子时上的连续时间系统,通常表示为:GPS周 + 周内秒。
各类时间系统的转化
TAI = UTC + n( n 为跳秒 )
TAI = GPST + 19s
式中的dUT1和跳秒可以在IERS公报上查询得到,如下图所示:
程序实现
程序实现的原理很简单,思路是通过函数获取计算机的时间(不是UTC,是UTC 转换到格林尼治所在的时间),然后以UTC为基础转换到其他各个时间系统。主要用到了C#的timer-tick控件,其他的实现都十分简单
本程序使用C#编写,需要使用Visual Studio 2019或更高版本。程序可以实现自动准换时间,也开放了用户输入的功能,截图如下:
代码已开源到github