1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
FUNCTION juldate(YYYYMMDD,HHMISS)
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
* Calculates the Julian date *
* *
* AUTHOR: Andreas Stohl (15 October 1993) *
* *
* Variables: *
* DD Day *
* HH Hour *
* HHMISS Hour, minute + second *
* JA,JM,JY help variables *
* JULDATE Julian Date *
* JULDAY help variable *
* MI Minute *
* MM Month *
* SS Second *
* YYYY Year *
* YYYYMMDDHH Date and Time *
* *
* Constants: *
* IGREG help constant *
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
IMPLICIT NONE
INTEGER YYYYMMDD,YYYY,MM,DD,HH,MI,SS,HHMISS
INTEGER JULDAY,JY,JM,JA,IGREG
DOUBLE PRECISION JULDATE
PARAMETER (IGREG=15+31*(10+12*1582))
YYYY=YYYYMMDD/10000
MM=(YYYYMMDD-10000*YYYY)/100
DD=YYYYMMDD-10000*YYYY-100*MM
HH=HHMISS/10000
MI=(HHMISS-10000*HH)/100
SS=HHMISS-10000*HH-100*MI
IF (YYYY.EQ.0) PAUSE 'There is no Year Zero.'
IF (YYYY.LT.0) YYYY=YYYY+1
IF (MM.GT.2) THEN
JY=YYYY
JM=MM+1
ELSE
JY=YYYY-1
JM=MM+13
ENDIF
JULDAY=INT(365.25*JY)+INT(30.6001*JM)+DD+1720995
IF (DD+31*(MM+12*YYYY).GE.IGREG) THEN
JA=INT(0.01*JY)
JULDAY=JULDAY+2-JA+INT(0.25*JA)
ENDIF
JULDATE=DBLE(FLOAT(JULDAY))+DBLE(FLOAT(HH)/24.)+
+DBLE(FLOAT(MI)/1440.)+DBLE(FLOAT(SS)/86400.)
RETURN
END
|