从TAI修改后的朱利安日转换为日期时间

时间:2017-08-08 16:16:30

标签: python datetime astropy

我正在尝试将TAI修改后的朱利安日转换为日期时间(反之亦然)。

我一直在阅读astropy的Time()文档,我已经接近了:

from astropy.time import Time

constantOffset = 2430000
input1 = 27754.500428240735  # corresponds to 2017-01-01 00:00:00 in TAIMJD
input2 = 27253.500416666669  # corresponds to 2015-08-19 00:00:00 in TAIMJD

t1 = Time(input1 + constantOffset, format='jd')
print(t1.datetime)  # 2017-01-01 00:00:37
t2 = Time(input2 + constantOffset, format='jd')
print(t2.datetime)  # 2015-08-19 00:00:36

这里出现的问题是根据年份有不断变化的偏差 - 请参阅http://maia.usno.navy.mil/ser7/tai-utc.dat

我已经将参数scale='tai'添加到Time对象的声明中,但似乎没有任何改变。

有人看到了解决不稳定偏移的方法吗?

可能会有所帮助 - http://docs.astropy.org/en/stable/time/

1 个答案:

答案 0 :(得分:3)

看起来你正在混合TAI和UTC时标。 scale中的默认时间astropy.time.TimeUTC,但相对于TAI,您需要提供JD时间。以下是您可能期望的结果:

>>> t1 = Time(input1 + constantOffset, format='jd', scale='tai')
>>> t1_utc = t1.utc
>>> t1_utc.iso
'2017-01-01 00:00:00.000'
>>> t1_utc.datetime
datetime.datetime(2017, 1, 1, 0, 0)