function formatReplace,target,in,start,length
compile_opt idl2,hidden
slen = strlen(target)
if start gt 0 then begin
front = strmid(target,0,start)
endif else begin
front = ''
endelse
if start + length lt slen then begin
back = strmid(target,start+length,slen-(start+length))
endif else begin
back = ''
endelse
return,front+in+back
end
function formatDate,value,formatString,scaling
compile_opt idl2
if scaling eq 1 then begin
val = 10^(value)
endif else if scaling eq 2 then begin
val = exp(value)
endif else begin
val = value
endelse
ts = time_struct(val)
if ts.fsec ge 1d then begin
td = time_double(ts)
ts = time_struct(td)
endif
fs = formatString
while 1 do begin
if (val = stregex(fs,'%time',/fold_case,length=l)) ne -1 then begin
in = string(ts.hour,format='(I2.2)') + ':' + $
string(ts.min,format='(I2.2)') + ':' + $
string(ts.sec,format='(I2.2)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%exacttime',/fold_case,length=l)) ne -1 then begin
in = string(ts.hour,format='(I2.2)') + ':' + $
string(ts.min,format='(I2.2)') + ':' + $
string(ts.sec,format='(I2.2)') + '.' + $
string(ts.fsec*1000, format='(I3.3)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%date',/fold_case,length=l)) ne -1 then begin
in = string(ts.year,format='(I4.4)') + '-' + $
string(ts.month,format='(I2.2)') + '-' + $
string(ts.date,format='(I2.2)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%year',/fold_case,length=l)) ne -1 then begin
in = string(ts.year,format='(I4.4)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%mon',/fold_case,length=l)) ne -1 then begin
in = string(ts.month,format='(I2.2)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%day',/fold_case,length=l)) ne -1 then begin
in = string(ts.date,format='(I2.2)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%hours',/fold_case,length=l)) ne -1 then begin
in = string(ts.hour,format='(I2.2)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%minutes',/fold_case,length=l)) ne -1 then begin
in = string(ts.min,format='(I2.2)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%seconds',/fold_case,length=l)) ne -1 then begin
in = string(ts.sec,format='(I2.2)')
fs = formatReplace(fs,in,val,l)
endif else if (val = stregex(fs,'%doy',/fold_case,length=l)) ne -1 then begin
in = string(ts.doy,format='(I3.3)')
fs = formatReplace(fs,in,val,l)
endif else begin
break
endelse
endwhile
return,fs
end