DECLARE FUNCTION JD! (Y%, M%, DT!)
DECLARE FUNCTION DifTime! (Y1%, M1%, DT1!, Y2%, M2%, DT2!)
REM Определение интервала времени между двумя датами
REM григорианского календаря : (Y1,M1,DT1) и (Y2,M2,DT2)
CLS
INPUT "Задайте год григорианского календаря : ", Y1%
INPUT "Задайте месяц григорианского календаря : ", M1%
INPUT "Задайте день и время : ", DT1
INPUT "Задайте год григорианского календаря : ", Y2%
INPUT "Задайте месяц григорианского календаря : ", M2%
INPUT "Задайте день и время : ", DT2
PRINT "Интервал = ", DifTime(Y1%, M1%, DT1, Y2%, M2%, DT2)
END
FUNCTION DifTime (Y1%, M1%, DT1, Y2%, M2%, DT2)
' Определение интервала времени между
' двумя григорианскими датами
' Y1,Y2 - годы M1,M2 - месяцы
' целые части DT1, DT2 - дни
' дробные части DT1, DT2 - время дня
jd1 = JD(Y1%, M1%, DT1)
jd2 = JD(Y2%, M2%, DT2)
DifTime = ABS(jd1 - jd2)
END FUNCTION
FUNCTION JD (Y%, M%, DT)
DIM a AS INTEGER, b AS INTEGER, mm AS INTEGER, yy AS INTEGER
DIM c AS LONG
b = 0
yy = Y%
mm = M%
IF M% < 3 THEN yy = yy - 1: mm = mm + 12
a = yy \ 100
IF Y% + M% / 100! + DT / 10000 > 1582.1015# THEN
b = b + 2 - a + a \ 4
END IF
c = INT(365.25 * yy)
IF yy < 0 THEN c = INT(365.25 * yy - .75)
JD = c + INT(30.6001 * (mm + 1)) + DT + 1720994.5# + b
END FUNCTION