私はJ2000形式で時間を持っています。 1-1-2000の正午から数秒後に、[year-month-day hour:min:sec.millisec]の形式のUTC時刻に変換します。 AstroPyなどに変換機能を持たせる機能がありますか?J2EE時間を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などに変換機能を持たせる機能がありますか?J2EE時間をPythonでUTCに変換するには?
入力:J2000で 時間:559889620.293秒
所望の出力:UTCで 時間:2017年9月28日16:53:40.293
あなたがTime
and TimeDelta
from astropy.time
を使用することができastropy
使用したい場合:
>>> 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')
あなたは何を覚えてしたくない場合は良い選択肢でありますジュリアン日付(1.1.2000の正午)のベースラインは
TimeDeltaは実際には必要ありません。時間にQuantityオブジェクトを追加できるので、以下のように動作します: '(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)
あなたは単にベースdatetime
にtimedelta
を追加することができます。
import datetime
datetime.datetime(2000, 1, 1, 12, 0) + datetime.timedelta(seconds=559889620.293)
リターン:
datetime.datetime(2017, 9, 28, 16, 53, 40, 293000)
実際にJ2000を意味する場合、それは2000年1月1日12:00、_terrestrial time_と[定義されています(http://aa.usno.navy.mil/faq/docs/ICRS_doc.php)です。これはUT1の11:58:56.171に相当します。重要であれば、その時のUT1とUTCの差を調べることができますが、それは±0.9秒以内になります。秒がカウントされたときに、うるう秒がカウントに含まれているかどうかを検討する必要もあります。 –