Viewing contents of file '../idllib/ssw/allpro/anytim2doy.pro'
function anytim2doy, tim_in, year=year, qstop=qstop, string=string
;
;+
;NAME:
;	anytim2doy
;PURPOSE:
;	Given a time in the form of a (1) structure, (2) 7-element time
;	representation, or (3) a string representation, 
;	return the day of the year for that day
;CALLING SEQUENCE:
;	xx = anytim2doy(roadmap)
;	xx = anytim2doy('12:33 5-Nov-91')
;INPUT:
;	tim_in	- The input time
;		  Form can be (1) structure with a .time and .day
;		  field, (2) the standard 7-element external representation
;		  or (3) a string of the format "hh:mm dd-mmm-yy"
;OPTIONAL KEYWORD INPUT:
;	string	- If set, return the output in the form YYDDD (ie: 98020)
;OPTIONAL KEYWORD OUTPUT:
;	year	- The year for the time(s) passed in
;HISTORY:
;	Written 7-Jun-92 by M.Morrison
;	11-Jan-94 (MDM) - Updated the header information
;	18-Feb-98 (MDM) - Added /STRING option
;	 5-Mar-98 (MDM) - Changed from STRING to FSTRING
;			- Changed logic to do '1-Jan-YY' conversion
;			  once per year rather than the full array
;			  (speeds it up considerably for 
;-
;
daytim = anytim2ints(tim_in)
timarr = anytim2ex(tim_in)
year = timarr(6,*)
;

;;daytim_jan1 = anytim2ints('1-jan-' + strtrim( year, 2) )
;;doy = daytim.day - daytim_jan1.day + 1
;
n = n_elements(year)
doy = intarr(n)
if (n eq 1) then uyear = year $
                else uyear = year(uniq(year, sort(year)))
for iyear=0,n_elements(uyear)-1 do begin
    ss = where(year eq uyear(iyear), nss)
    if (nss eq 1) then ss = ss(0)       ;to avoid IDL bug giving the message
                                        ;"Expression must be a scalar in this context: <INT       Array[1]>."
    day1 = anytim('1-Jan-'+strtrim(uyear(iyear),2),/int)
    doy(ss) = daytim(ss).day - day1.day + 1
end


if (keyword_set(string)) then doy = fstring(year, format='(i2.2)') + fstring(doy, format='(i3.3)')
return, doy
end