;+
; FUNCTION:
; DATETIMESEC_DOY
;
; DESCRIPTION:
;
; function to return seconds since 1/1/1970 00:00 UT, from date and
; time given as day, month, year, hour, minute, second, millisecond.
;
; USAGE (SAMPLE CODE FRAGMENT):
;
;
; ; set up a date and time (21 Mar '91, 00:01:01.000)
;
; doy = 80
; year = 91
; hour = 0
; min = 1
; sec = 1
; msc = 0
;
; ; convert to seconds
;
; sec_date_time = datetimesec_doy(year, doy, hour, min, sec, msc)
;
; ; print it out
;
; PRINT, sec_date_time
;
; --- Sample output would be
;
; 669517261
;
;
; NOTES:
;
; If any of the fields are are out of range, the value will be carried.
; e.g. given date and time of 31/12/90, 25:01:00.1001, this will be
; converted to 1/1/91, 01:01:01: 001
; If any of the input values are negitive, this is an error and -1 will
;
; This function can return seconds of days, or seconds since 1970 only
; by calling it with dates or times set to zero.
;
; If input values are arrays, then an array of N_ELEMENTS(inputs vals)
; of date strings and remainders will be returned. The number of
; array elements for all input parameters must be the same
;
;
; REVISION HISTORY:
;
; @(#)datetimesec_doy.pro 1.2 01/26/99
; Originally written by Jonathan M. Loran, University of
; California at Berkeley, Space Sciences Lab. Sep. '91
;
; Revised to handle arrays of input values, JML, Mar. '92
;-
FUNCTION datetimesec_doy, yrin, doyin, hrin, minin, secin, mscin
; Check that all input parameters have the same dimension
elems = N_ELEMENTS(doyin)
if n_params() eq 5 then mscin = intarr(elems)
IF ((elems NE N_ELEMENTS(yrin)) $
OR (elems NE N_ELEMENTS(hrin)) $
OR (elems NE N_ELEMENTS(minin)) $
OR (elems NE N_ELEMENTS(secin)) $
OR (elems NE N_ELEMENTS(mscin))) $
THEN RETURN, -1.D
IF (WHERE((doyin LT 0) OR (yrin LT 0) OR (hrin LT 0) $
OR (minin LT 0) OR (secin LT 0) OR (mscin LT 0)))(0) NE -1 $
THEN RETURN, -1.D ; all values must be positive
WHILE yrin GE 200 DO yrin = yrin - 100
RETURN, datesec_doy(yrin,doyin)+secofday(hrin, minin, secin, mscin)
; done
END