我有時間在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
我有時間在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
如果你想使用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日中午)是。
您實際上並不需要'TimeDelta',因爲您可以將時間數量對象添加到時間:'(Time('J2000.0')+ 559889620.293 * u.s).iso' –
偏移量是恆定的,所以你可以只是將它加入:
>>> 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)
如果你真的指的是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。您還需要考慮計算秒數時是否將閏秒包括在計數中。 –