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

Ros*_*ose 3 python time utc python-2.7 astropy

我有时间使用 J2000 格式,即。2000 年 1 月 1 日中午后的秒数,我想将其转换为格式为 [年-月-日小时:分钟:秒.毫秒] 的数组中的 UTC 时间。AstroPy 中是否有一些功能或类似的功能可以进行转换?

输入:J2000 中的时间:559889620.293 秒

所需输出:UTC 时间:2017-09-28 16:53:40.293

MSe*_*ert 6

如果你想使用astropy你可以使用Time和TimeDelta来自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'
Run Code Online (Sandbox Code Playgroud)

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

  • 您实际上并不需要`TimeDelta`,以下将起作用,因为您可以将时间数量对象添加到时间:`(Time('J2000.0') + 559889620.293*us).iso` (2认同)

wim*_*wim 5

偏移量是恒定的,所以你可以添加它:

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


Mar*_*som 5

您只需将 a 添加timedelta到 base即可datetime。

import datetime
datetime.datetime(2000, 1, 1, 12, 0) + datetime.timedelta(seconds=559889620.293)
Run Code Online (Sandbox Code Playgroud)

返回:

datetime.datetime(2017, 9, 28, 16, 53, 40, 293000)
Run Code Online (Sandbox Code Playgroud)