pro day_to_year_doy,day,y,d ;+ ;NAME: ; day_to_year_doy ;PURPOSE: ; determines year and day of year given day since 0000 AD ;USAGE: ; day_to_year_doy,daynum,year,doy ;INPUT: ; daynum: (long int) day since 0 AD ;OUTPUT: ; year: year (0 <= year <= 14699 AD) ; doy: day of year (1 <= doy <= 366) ;NOTES: ; This procedure is reasonably fast, it works on arrays and works from ; 0 AD to 14699 AD ; ;CREATED BY: Davin Larson Oct 1996 ;FILE: day_to_year_doy.pro ;VERSION: 1.2 ;LAST MODIFICATION: 97/01/27 ;- day = floor(day) ;get year correctly to within one year y = (day*400)/(365l*400 +100 -4 + 1) ;get doy based on the year d = day - (y*365 + y/4 - y/100 + y/400 - y/4000) w = where(d ge 365,c) ;make corrections if(c ne 0) then begin y(w) = y(w) +1 d(w) = day(w) - (y(w)*365 + y(w)/4 - y(w)/100 + y(w)/400 - y(w)/4000) endif w = where(d lt 0,c) ;more corrections if(c ne 0) then begin y(w) = y(w) -1 d(w) = day(w) - (y(w)*365 + y(w)/4 - y(w)/100 + y(w)/400 - y(w)/4000) endif y = y+1 d = d+1 return end