function elapsed_time,yyyymmdd,hours,start_yyyy ;----------------------------------------------------------------- ; Purpose: ; Compute elapsed time as days since midnight January 1, start_yyyy ; This is usefull when plotting data as time series, or when finding ; time coincidence for 2 data sets. ; ; Input: ; yyyymmdd.....date, e.g., Jan 12, 1999 = 19990112 ; hours........time, in decimal hours, e.g., 12:30 = 12.5 ; start_yyyy...year to start counting from ; ; Output: ; et...........elapsed time, days since midnight Jan 1, start year ; ; Notes: ; day 1 (Jan1) at 12:00 hours is 0.5 days into the year, ; Jan 1 at 24:00 hours is 1 day into the year, etc.... ; Routine accounts for leap years, e.g. 1996 has 366 ; days while 1997 has 365 days... ; ; Source: Mark Hervig ; ;----------------------------------------------------------------- ndate = n_elements(yyyymmdd) et = fltarr(ndate) ;- break it down into year, julian date, and day # yyyy = long(yyyymmdd/10000) ; year julian = yyyymmdd_2_julian(yyyymmdd) ; julian date day = julian - yyyy*1000L ; day # in year ;- find number of days since start year for i = 0,ndate-1 do begin dy = yyyy(i) - start_yyyy ;- date is in 1st year if (dy eq 0) then begin et(i) = day(i)-1 + hours(i)/24.0 endif ;- date is dy years after 1st year, account for leap years if (dy gt 0) then begin for j = 0,dy-1 do begin jd = yyyymmdd_2_julian((start_yyyy+j)*10000L + 1231) ; julian date of dec 31 last = jd - long(jd/1000)*1000 ; julian day of dec 31 et(i) = et(i) + last endfor et(i) = et(i) + day(i)-1 + hours(i)/24.0 endif endfor return,et end