Viewing contents of file '../idllib/jhuapls1r/usr/dt_tm_tojs.pro'
;-------------------------------------------------------------
;+
; NAME:
;       DT_TM_TOJS
; PURPOSE:
;       Convert a date/time string to "Julian Seconds".
; CATEGORY:
; CALLING SEQUENCE:
;       js = dt_tm_tojs( dt)
; INPUTS:
;       dt = date/time string (may be array).   in
;            (see date2ymd for format)
; KEYWORD PARAMETERS:
;       Keywords:
;         ERROR=err  Error flag: 0=ok, else error.
; OUTPUTS:
;       js = "Julian Seconds".                  out
; COMMON BLOCKS:
; NOTES:
;       Notes: Julian seconds (not an official unit) serve the
;         same purpose as Julian Days, interval computations.
;         The zero point is 0:00 1 Jan 2000, so js < 0 before then.
;         Julian Seconds are double precision and have a precision
;         better than 1 millisecond over a span of +/- 1000 years.
;       
;         2 digit years (like 17 or 92), YY, are handled as follows:
;         IF YY < 50 THEN YY = YY + 2000
;         IF YY < 100 THEN YY = YY + 1900
;       
;       See also dt_tm_fromjs, ymds2js, js2ymds, jscheck.
; MODIFICATION HISTORY:
;       R. Sterner, 23 Jul, 1992
;       R. Sterner, 1994 Mar 29 --- Modified to handle arrays.
;
; Copyright (C) 1992, Johns Hopkins University/Applied Physics Laboratory
; This software may be used, copied, or redistributed as long as it is not
; sold and this copyright notice is reproduced on each copy made.  This
; routine is provided as is without any express or implied warranties
; whatsoever.  Other limitations apply as described in the file disclaimer.txt.
;-
;-------------------------------------------------------------
 
	function dt_tm_tojs, dt, error=err, help=hlp
 
	if (n_params(0) lt 1) or keyword_set(hlp) then begin
	  print,' Convert a date/time string to "Julian Seconds".'
	  print,' js = dt_tm_tojs( dt)'
	  print,'   dt = date/time string (may be array).   in'
	  print,'        (see date2ymd for format)'
	  print,'   js = "Julian Seconds".                  out'
	  print,' Keywords:'
	  print,'   ERROR=err  Error flag: 0=ok, else error.'
   	  print,' Notes: Julian seconds (not an official unit) serve the'
   	  print,'   same purpose as Julian Days, interval computations.'
   	  print,'   The zero point is 0:00 1 Jan 2000, so js < 0 before then.'
   	  print,'   Julian Seconds are double precision and have a precision'
   	  print,'   better than 1 millisecond over a span of +/- 1000 years.'
	  print,' '
	  print,'   2 digit years (like 17 or 92), YY, are handled as follows:'
	  print,'   IF YY < 50 THEN YY = YY + 2000'
	  print,'   IF YY < 100 THEN YY = YY + 1900'
	  print,' '
	  print,' See also dt_tm_fromjs, ymds2js, js2ymds, jscheck.'
	  return, -1
	endif
 
	err = 0
        dt_tm_brk, dt, dat, tim		   ; Break into date and time strings.
        date2ymd, dat, yy, mm, dd	   ; Break date into y,m,d.
	w = where(yy lt 0, c)		   ; Find bad dates.
	if c gt 0 then begin
	  print,' Error in dt_tm_tojs: given date not valid or incomplete.'
	  print,'   Problem date(s):'
	  for i=0,c-1 do print,dat(w(i))
	  err = 1
	endif
	w = where(yy lt 50, c)		   ; Fix 2 digit years.
	if c gt 0 then yy(w) = yy(w) + 2000
	w = where(yy lt 100, c)
	if c gt 0 then yy(w) = yy(w) + 1900   
	ss = secstr(tim)		   ; Convert time to seconds.
	js = ymds2js(yy,mm,dd,ss)	   ; Finish conversion.
	return, js
 
	end