Viewing contents of file '../idllib/jhuapls1r/usr/date2dn.pro'
;-------------------------------------------------------------
;+
; NAME:
; DATE2DN
; PURPOSE:
; Find day of year number from date.
; CATEGORY:
; CALLING SEQUENCE:
; dn = date2dn(date)
; INPUTS:
; date = date string (like 6 Jul, 1995). in
; KEYWORD PARAMETERS:
; OUTPUTS:
; dn = day number in year (like 187). out
; COMMON BLOCKS:
; NOTES:
; Notes: The format of the date is flexible except that the
; month must be month name.
; Dashes, commas, periods, or slashes are allowed.
; Some examples: 23 sep, 1985 sep 23 1985 1985 Sep 23
; 23/SEP/85 23-SEP-1985 85-SEP-23 23 September, 1985.
; Doesn't check if month day is valid. Doesn't
; change year number (like 86 does not change to 1986).
; Dates may have only 2 numeric values, year and day. If
; both year & day values are < 31 then day is assumed first.
; systime() can be handled: dn=date2dn(systime()).
; Day number is returned as a string.
; For invalid dates dn is set to a null string.
; Times are allowed.
; MODIFICATION HISTORY:
; R. Sterner, 1995 Jul 6
;
; Copyright (C) 1995, 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 date2dn, date0, help=hlp
if (n_params(0) lt 1) or keyword_set(hlp) then begin
print,' Find day of year number from date.'
print,' dn = date2dn(date)'
print,' date = date string (like 6 Jul, 1995). in'
print,' dn = day number in year (like 187). out
print,' Notes: The format of the date is flexible except that the'
print,' month must be month name.'
print,' Dashes, commas, periods, or slashes are allowed.
print,' Some examples: 23 sep, 1985 sep 23 1985 1985 Sep 23'
print,' 23/SEP/85 23-SEP-1985 85-SEP-23 23 September, 1985.'
print," Doesn't check if month day is valid. Doesn't"
print,' change year number (like 86 does not change to 1986).'
print,' Dates may have only 2 numeric values, year and day. If'
print,' both year & day values are < 31 then day is assumed first.'
print,' systime() can be handled: dn=date2dn(systime()).'
print,' Day number is returned as a string.'
print,' For invalid dates dn is set to a null string.'
print,' Times are allowed.'
return, ''
endif
dt_tm_brk,date0,date,tm
date2ymd,date,y,m,d ; Find year, month, day from date.
if y lt 0 then return,'' ; Invalid date, return a null string.
dn = strtrim(ymd2dn(y,m,d),2) ; Day number.
if tm eq '' then return, dn ; No fraction.
frac = secstr(tm)/86400. ; Fraction of day.
return, strtrim(dn+frac,2)
end