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

如何在python中将J2000时间转换为UTC?,python,python-2.7,time,utc,astropy,Python,Python 2.7,Time,Utc,Astropy,我有J2000格式的时间,即2000年1月1日中午后的秒,我想将其转换为UTC时间,格式为[年-月-日-小时:分钟:秒-毫秒]。在AstroPy或类似的东西中是否有一些功能来进行转换 输入: 以J2000为单位的时间:559889620.293秒 期望输出: UTC时间:2017-09-28 16:53:40.293偏移量是恒定的,因此您可以添加它: >>> OFFSET = datetime(2000,1,1,12) - datetime(1970,1,1) >>

我有J2000格式的时间,即2000年1月1日中午后的秒,我想将其转换为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)
返回:

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

如果您想使用astropy,您可以使用:


时间(2000,format='jyear')
是一个很好的选择,如果你不想记住朱利安日期(2000年1月1日中午)的基线是什么。

如果你真的是指J2000,它是2000年1月1日12:00,地球时间。这相当于11:58:56.171 UT1。如果有必要,您可以在当时查找UT1和UTC之间的差异,但不会超过±0.9秒。你也需要考虑,当秒被计数时,跳跃秒被包含在计数中。你实际上不需要<代码>时间增量> /代码>,下面的工作是因为你可以将时间量对象添加到时间:<代码>(时间('j20.0’)+559889620.293×U.s)。ISO < /代码>为什么在预期输出之前5秒?
>>> 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'