2017-09-29 82 views
2

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

输入: 时间J2000:559889620.293秒

所需的输出: 时间UTC:2017年9月28日16:53:40.293

+0

如果你真的指的是J2000,它是[定义](http://aa.usno.navy.mil/faq/docs/ICRS_doc.php)为2000年1月1日12:00,_terrestrial time_。这相当于11:58:56.171 UT1。如果重要的话,你可以查看当时UT1和UTC之间的差异,但不会超过±0.9 s。您还需要考虑计算秒数时是否将闰秒包括在计数中。 –

回答

4

如果你想使用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' 

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

+1

您实际上并不需要'TimeDelta',因为您可以将时间数量对象添加到时间:'(Time('J2000.0')+ 559889620.293 * u.s).iso' –

3

偏移量是恒定的,所以你可以只是将它加入:

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

您可以简单地添加一个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) 
相关问题