2017-09-29 23 views
2

私は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

+0

実際に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秒以内になります。秒がカウントされたときに、うるう秒がカウントに含まれているかどうかを検討する必要もあります。 –

答えて

4

あなたが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の正午)のベースラインは

+1

TimeDeltaは実際には必要ありません。時間にQuantityオブジェクトを追加できるので、以下のように動作します: '(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

あなたは単にベースdatetimetimedeltaを追加することができます。

import datetime 
datetime.datetime(2000, 1, 1, 12, 0) + datetime.timedelta(seconds=559889620.293) 

リターン:

datetime.datetime(2017, 9, 28, 16, 53, 40, 293000) 
関連する問題