マイコン宇宙講座-年月日算出

指定した年月日から経過日数後の年月日を求めます。未来だけでなく経過日数をマイナス記号をつけて指定することで過去の年月日も求めることができます。計算方法は簡単でユリウス日に経過日数を加減して求めたユリウス日からサブルーチンjdateを呼び出して年月日を求めています。

メインルーチン m22.py

# m22.py
# マイコン宇宙講座
# 2-2 年月日算出プログラム
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表示するための処理
yy, mm, dd = lib.jdate(jd, lib.T)

print()
print('   INPUT DATE = %4d %2d %7.5f UT' % (yy, mm, dd))
print('         MJD  = %11.5f UT' % (jd))
print()

# 経過日数
std = input('INTERVAL ? ')
i = float(std)
jd += i

# ユリウス日から年月日を求め、再度ユリウス日を求める
yy, mm, dd = lib.jdate(jd, lib.T)
jd = lib.julian(yy, mm, dd) - 2400000.5

print()
print('  RETURN DATE = %4d %2d %7.5f UT' % (yy, mm, dd))
print('         MJD  = %11.5f UT' % (jd))
print()

例題 1982年1月31日から10000日前の年月日を求めてみよう。

DATE AND TIME(JST) ? 19820131,090000

   INPUT DATE = 1982  1 31.00000 UT
         MJD  = 45000.00000 UT

INTERVAL ? -10000

  RETURN DATE = 1954  9 15.00000 UT
         MJD  = 35000.00000 UT