マイコン宇宙講座-JST⇔MJD変換
年月日と時刻を指定すると修正ユリウス日を求め、さらに修正ユリウス日から年月日と時刻を計算します。このプログラムでは、求めるユリウス日が協定世界時であるため、指定した年月日および時刻をUTC表示するのですが、計算式が簡略的であるため、メインプログラムの一部において、時刻が0時から8時までの場合、日付が正しく表示されません。このため、サブルーチンjdateを呼び出し、正しく表示されるように変更してあります。
注意: 時刻の指定は秒まで指定してください。
メインルーチン m21.py
# m21.py
# マイコン宇宙講座
# 2-1 JST<->MJD変換プログラム
import lib
print()
std = input('DATE AND TIME(JST) ? ')
dy, dt = std.split(',')
dy = float(dy)
dt = float(dt)
jd, yy, mm, dd, hh, ms, ss = lib.mjd(dy, dt)
# UTC表示のための処理
# 時刻によっては、日の部分が0になってしまうため、サブルーチンjdateを呼ぶ
yy, mm, dd = lib.jdate(jd, lib.T)
# ここまで
print()
print(' INPUT DATE = %4d %2d %7.5f UT' % (yy, mm, dd))
print(' MJD = %13.5f UT' % (jd))
# サブルーチン julianで求められるのはユリウス日
# 修正ユリウス日にする
jd = lib.julian(yy, mm, dd) - 2400000.5
print()
print(' RETURN DATE = %4d %2d %7.5f UT' % (yy, mm, dd))
print(' MJD = %13.5f UT' % (jd))
print()
例題 -4712年1月1日 21時00分00秒(JST)からMJDを求めてみよう。
DATE AND TIME(JST) ? -47120101,210000 INPUT DATE = -4712 1 1.50000 UT MJD = -2400000.50000 UT RETURN DATE = -4712 1 1.50000 UT MJD = -2400000.50000 UT