如何将 J2000 时间转换为 python 中的 UTC?

How to convert J2000 time to UTC in python?

我有 J2000 格式的时间,即。 1-1-2000 中午后的秒数,我想将其转换为格式为 [year-month-day hour:min:sec.millisec] 的数组中的 UTC 时间。 AstroPy 中是否有一些函数或类似的函数来进行转换?

输入: J2000 中的时间:559889620.293 秒

期望的输出: UTC 时间:2017-09-28 16:53:40.293

偏移量是常数,所以你可以直接加上它:

>>> OFFSET = datetime(2000,1,1,12) - datetime(1970,1,1)
>>> datetime.utcfromtimestamp(559889620.293) + OFFSET
datetime.datetime(2017, 9, 28, 16, 53, 40, 293000)

您只需将 timedelta 添加到基数 datetime

import datetime
datetime.datetime(2000, 1, 1, 12, 0) + datetime.timedelta(seconds=559889620.293)

returns:

datetime.datetime(2017, 9, 28, 16, 53, 40, 293000)

如果你想使用 astropy 你可以使用 Time and TimeDelta from astropy.time:

>>> from astropy.time import TimeDelta, Time
>>> from astropy import units as u
>>> (Time(2000, format='jyear') + TimeDelta(559889620.293*u.s)).iso
'2017-09-28 16:53:35.293'

如果您不想记住儒略日期(2000 年 1 月 1 日中午)的基准是什么,Time(2000, format='jyear') 是一个不错的选择。