由于各种输入信息的时间系统并不一致,因此需要在统一的时间下进行各参数的转换。
格里高利历(MJD和GPS周/日)
国际原子时Temps Atomique International(TAI)
作用:协调全球时间基准
引入时间:1972年
时间原点:取1958年1月1日0时0分0秒世界时(UT)的瞬间作为同年同月同日0时0分0秒TAI。(事后发现,在该瞬间原子时与世界时的时刻之差为0.0039秒。这一差值就作为历史事实而保留下来。)
协调世界时 Coordinated Universal Time(UTC)
作用:卫星的状态及跟踪卫星的观测数据
引入时间:1972年
秒长:与原子时相同
与原子时基准时间差异:UTC-TAI=(-10-27)s
其中10为两者定义基准时的闰秒,27为从1972年开始统计闰秒时的差异。
所有的####年##月##日均为格里高利历纪日法,闰年已包含在此体系内。
##时##分##秒计时法根据不同使用情况加后缀进行区分,闰秒只包含在UTC体系内。
太阳系质心动力学时 Dynamic Barycentric Time(TDB)
作用:解算坐标原点位于太阳系质心的运动方程、编制行星星表,计算岁差章动
引入时间:1972年
地球动力学时 (TT)
作用:解算围绕地球质心运动的天体的运动方程,编制卫星星历
引入时间:1991年
时间原点:TT=TAI+32.184s
全球统一世界时 Principal Universal Time(UT1)
作用:全世界民用时基础,表示地球瞬时自转轴的自转速度
UTC与UT1差值的计算 |UTC-UT1|<0.9s
matlab里面的计算函数为
[DUT1,DUT1Error]=deltaUT1(utc)
计算公式为:
UT1-UTC=0.5309-0.00123(MJD-57808)-(UT2-UT1)
使用如下:
>> mjd = mjuliandate([2015 12 28])
[dUT1,dUT1Err] = deltaUT1(mjd)
mjd =
57384
dUT1 =
0.0885937
dUT1Err =
3.9e-06
儒略日 Julian Date(JD)
A Julian date is the number of days and fractional days since noon on November 24, 4714 BCE in the proleptic Gregorian calendar, or January 1, 4713 BCE in the proleptic Julian calendar.
公历即格里历,又译格里高利历,称公元。
儒略日是法国学者Joseph Justus Scaliger(1540-1609)设计的一种历法,与尤里乌斯·恺撒于公元前45年颁布的儒略历没有关系,不要混淆。儒略日是指从公元-4712年1月1日12时(公元前4713年1月1日12时)开始连续计算得出的天数(不满一日的部分用小数表示)。
儒略日记得是什么日?儒略日记的的世界时(UT).
以下时间格式均为:格里高利历+UTC。
>> t1 = datetime('-4713-11-24 12:00:00');jd1 = juliandate(t1)
jd1 =
0>> t1 = datetime('-4713-11-24 12:00:00');mjd1 = juliandate(t1,'modifiedjuliandate')
mjd1 =
-2400000.5
简化儒略日 Modified Julian Date(MJD)
A modified Julian date is the number of days and fractional days since November 17, 1858 00:00:00
由于儒略日数字位数太多,国际天文学联合会于1973年采用简化儒略日(MJD),其定义为 MJD = JD - 2400000.5。MJD相应的起点是1858年11月17日世界时(UT)0时。
以下时间格式均为:格里高利历+UTC。
>> t1 = datetime('1858-11-17 00:00:00');jd1 = juliandate(t1)
jd1 =
2400000.5>> t1 = datetime('1858-11-17 00:00:00');mjd1 = juliandate(t1,'modifiedjuliandate')
mjd1 =
0>> t1 = datetime('2000-01-01 00:00:00');mjd1 = juliandate(t1)
mjd1 =
2451544.5
UNIX时间戳
UNIX时间戳以UTC时间1971-01-01 00:00:00为起点,到当前时间的秒数,不考虑闰秒。
格林尼治平恒星时Greenwich Mean Sidereal Times(GMST)
格林尼治瞬恒星时Greenwich Apparent Sidereal Times(GAST)
matlab里面计算函数为:
[thGMST,thGAST] = siderealTime(utcJD,dUT1,dAT)
utcJD指utc格式的格里高利时间转换成的儒略日;
dUT1=UT1-UTC
dAT=TAI-UTC
说明:
|UTC-UT1|<0.9s
TAI-UTC=-10-27=-37s
以下示例含义为 格里高利历(公元)2019年1月4日12时0时0分(UTC)时刻对应的格林尼治平恒星时和格林尼治瞬恒星时。
>> jd = juliandate([2019 1 4 12 0 0]);
>> [thGMST, thGAST] = siderealTime(jd)
thGMST =
284.303120228708
thGAST =
284.303054910965
算例
以2020年1月1日0时0分0秒UTC计算各时间。
时间格式转换
以2016年1月1日0时0分0秒UTC为例。
format longG
timeUTC = datetime(2016,1,1,0,0,0);timeUTC.Format = 'yyyy-MM-dd HH:mm:ss.SSS'
timeUTC = datetime
2016-01-01 00:00:00.000
timeUTC_JD = juliandate(timeUTC)
timeUTC_JD = 2457388.5
timeUTC_MJD = juliandate(timeUTC,'modifiedjuliandate')
timeUTC_MJD = 57388
T = leapseconds
T = 27×2 timetable
| Date | Type | CumulativeAdjustment |
1 | 30-6月-1972 | + | 1 sec |
2 | 31-12月-1972 | + | 2 sec |
3 | 31-12月-1973 | + | 3 sec |
4 | 31-12月-1974 | + | 4 sec |
5 | 31-12月-1975 | + | 5 sec |
6 | 31-12月-1976 | + | 6 sec |
7 | 31-12月-1977 | + | 7 sec |
8 | 31-12月-1978 | + | 8 sec |
9 | 31-12月-1979 | + | 9 sec |
10 | 30-6月-1981 | + | 10 sec |
11 | 30-6月-1982 | + | 11 sec |
12 | 30-6月-1983 | + | 12 sec |
13 | 30-6月-1985 | + | 13 sec |
14 | 31-12月-1987 | + | 14 sec |
15 | 31-12月-1989 | + | 15 sec |
16 | 31-12月-1990 | + | 16 sec |
17 | 30-6月-1992 | + | 17 sec |
18 | 30-6月-1993 | + | 18 sec |
19 | 30-6月-1994 | + | 19 sec |
20 | 31-12月-1995 | + | 20 sec |
21 | 30-6月-1997 | + | 21 sec |
22 | 31-12月-1998 | + | 22 sec |
23 | 31-12月-2005 | + | 23 sec |
24 | 31-12月-2008 | + | 24 sec |
25 | 30-6月-2012 | + | 25 sec |
26 | 30-6月-2015 | + | 26 sec |
27 | 31-12月-2016 | + | 27 sec |
timeLeapSeconds = 27;%second
dTAI_UTC = (10+timeLeapSeconds);
timeTAI = timeUTC+dTAI_UTC/86400
timeTAI = datetime
2016-01-01 00:00:37.000
timeTAI_JD = juliandate(timeTAI)
timeTAI_JD = 2457388.50042824
timeTAI_MJD = juliandate(timeTAI,'modifiedjuliandate')
timeTAI_MJD = 57388.0004282407
dTT_TAI = 32.184;%second TT-TAI=32.184s
timeTT = timeTAI+dTT_TAI/86400
timeTT = datetime
2016-01-01 00:01:09.183
timeTT_JD = juliandate(timeTT)
timeTT_JD = 2457388.50080074
timeTT_MJD = juliandate(timeTT,'modifiedjuliandate')
timeTT_MJD = 57388.0008007407
timeTDB_JD=tdbjuliandate([timeTT.Year timeTT.Month timeTT.Day timeTT.Hour timeTT.Minute timeTT.Second])
timeTDB_JD = 2457388.50080074
Content Announcements of the value of DUT1=UT1-UTC to be transmitted with time signals with a precision of +/-0.1s.
Format ASCII
Format Description See contents of the file.
Documentation http://hpiers.obspm.fr/eoppc/bul/buld/BULLETIND.GUIDE
Data UT1-UTC [s]
Accuracy 0.1 s
INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
SERVICE DE LA ROTATION TERRESTRE
OBSERVATOIRE DE PARIS
61, Av. de l'Observatoire
75014 PARIS (France)
Tel. 33 (0) 1 40 51 22 29
FAX 33 (0) 1 40 51 22 91
Internet: services.iers@obspm.fr Paris, 27 October 2015
Bulletin D 126
ANNOUNCEMENT OF DUT1
From the
26 November 2015, 0h UTC
until further notice, the value of DUT1 to be disseminated with the
time signals will be
DUT1 = +0.1 s
Bulletin D 127 should be issued in January 2016
dUT1_UTC = deltaUT1(timeUTC_MJD)%UT1-UTC
dUT1_UTC = 0.0815795
timeUT1 = timeUTC+dUT1_UTC/86400
timeUT1 = datetime
2016-01-01 00:00:00.081
[thGMST,thGAST] = siderealTime(timeUTC_JD,dUT1_UTC,dTAI_UTC)
thGMST = 100.091354068898
thGAST = 100.091350362402