> atime dTT(TT-UTC) 68.184000 TT 2016/10/09 03:31:08.1840 UTC 2016/10/09 03:30:00.0000 |
> atime 2001 dTT(TT-UTC) 64.184000 TT 2001/01/01 00:01:04.1840 UTC 2001/01/01 00:00:00.0000 > atime 2001 12 dTT(TT-UTC) 64.184000 TT 2001/12/01 00:01:04.1840 UTC 2001/12/01 00:00:00.0000 > atime 2001 12 31 23 dTT(TT-UTC) 64.184000 TT 2001/12/31 23:01:04.1840 UTC 2001/12/31 23:00:00.0000 |
double get_dt(double dJD) { /* cal. parameter table */ if (dJD >= 2441317.5){ /* (1972~) */ return get_dtt_1972(dJD); } if (dJD >= 2400410.5){ /* 1860~1971 */ return get_dt_table(dJD); } /* other year */ return get_dt_approx(dJD); } |
$ ./atime 1976 12 31 23 59 45 dTT(TT-UTC) 47.184000 TT 1977/01/01 00:00:32.1840 UTC 1976/12/31 23:59:45.0000 |
/* about jd to year */ i = (int)((dJD - 2400410.5) / GREGOR_YEARDAY) - 1; if (i < 0){ i = 0; } |
$ ./atime 1958 dT(ET-UT) 32.180000 ET 1958/01/01 00:00:32.1800 UT 1958/01/01 00:00:00.0000 |
if(dJD >= 2441317.5){ ddAT = get_dtt_1972(dJD); }else{ ddAT = get_dt(dJD + dTimeDay); } |
if (dJD_tt >= (2441317.5 + (10 + DTAI_TT) / DAYSEC)){ ddAT = get_dtt_tt_1972(dJD_tt, &n60sec); if (n60sec != 0){ dJD_tt -= (1.0/DAYSEC); } }else{ /* ~1971 */ ddAT = 0; do{ dJD = ddAT; ddAT = get_dt(dJD_tt - dJD); }while(fabs(dJD - ddAT) > (0.1 / DAYSEC)); } |
$ ./atime 2015 6 30 23 59 59.987 dTT(TT-UTC) 67.184000 TT 2015/07/01 00:01:07.1710 UTC 2015/06/30 23:59:59.9870 $ ./atime 2015 6 30 23 59 60.987 dTT(TT-UTC) 67.184000 TT 2015/07/01 00:01:08.1710 UTC 2015/06/30 23:59:60.9870 $ ./atime 2015 7 1 0 0 0.987 dTT(TT-UTC) 68.184000 TT 2015/07/01 00:01:09.1710 UTC 2015/07/01 00:00:00.9870 |
$ ./atime 1976 12 31 23 59 45 dTT(TT-UTC) 47.184000 TT 1977/01/01 00:00:32.1840 UTC 1976/12/31 23:59:45.0000 |
$ ./atime 1958 dT(ET-UT) 32.180000 ET 1958/01/01 00:00:32.1800 UT 1958/01/01 00:00:00.0000 |