'=============================================================================
' These functions are adapted to B4A from Tom VanBaak's web site, leapsecond.com
' For background on Julian Day And Modified Julian Day, see http://tycho.usno.navy.mil/mjd.html
'=============================================================================
' Convert year/month/day calendar date to MJD (Modified Julian Day).
' - year is (4-digit calendar year), month is (1-12), day is (1-31)
' - valid For Gregorian dates from 17-Nov-1858 (adapted from sci.astro FAQ)
Sub ymd_to_mjd( sd As DateType ) As Long
Dim year, month, day As Int, mjd As Long
year = sd.y
month = sd.m
day = sd.d
mjd = _
367 * year _
- 7 * (year + (month + 9) / 12) / 4 _
- 3 * ((year + (month - 9) / 7) / 100 + 1) / 4 _
+ 275 * month / 9 _
+ day + 1721028 - 2400000
Return( mjd )
End Sub ' ymd_to_mjd()
' Convert Modified Julian day (mjd) to year/month/day calendar date.
' - year is (4-digit calendar year), month is (1-12), day is (1-31)
' - adapted from Fliegel/van Flandern ACM 11/#10 p 657 Oct 1968
Sub mjd_to_ymd( mjd As Long ) As DateType
Dim J, C, Y, M, d, mo, y As Long
Dim sd As DateType
J = mjd + 2400001 + 68569
C = 4 * J / 146097
J = J - (146097 * C + 3) / 4
Y = 4000 * (J + 1) / 1461001
J = J - 1461 * Y / 4 + 31
M = 80 * J / 2447
d = J - 2447 * M / 80
J = M / 11
sd.d = d
mo = M + 2 - (12 * J)
sd.m = mo
y = 100 * (C - 49) + Y + J
sd.y = y
Return( sd )
End Sub ' mjd_to_ymd()