2017-09-29 122 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) 
相關問題