; ; PURPOSE: Calculate date and time that correspond to a fractional crn:Cl0 ; CALLING SEQUENCE : ; datetime_scrncrl_200905,crn,crl,reso=,year,month,day,hh,mm,ss,/plt ; IUPUT: crn,crl,reso= ; OUTPUT: year,month,day,hh,mm,ss,/plt ; MODIFICATION HISTORY : ; First version: 20090531 by X. Zhao based on datetime_scrncrl.pro ; 20060327 by X. Zhao ; ;pro date_crncrlz1,crn,crl,RESO=reso,date1,crli,date0,PLT=plt pro date_crncrlz1,crn,crl,date1,crli,date0,PLT=plt if N_params() LT 1 then begin ; print,'date_crncrlz1,crn,crl,reso=,date1,crli,date0,/plt' print,'date_crncrlz1,crn,crl,crli,date0,/plt' print,"crn=2081 & crl=180.50" print,"resolution of 600sec., 300sec, 60sec, 10sec and 1sec" return endif lim=0.00194444 ; CASE 1 OF ; reso eq 600: lim=0.166667 ; 600 sec = 10 min. = 0.166667 hr ; reso eq 300: lim=0.0833333 ; reso eq 60: lim=0.0166667 ; reso eq 10: lim=0.00277778 ; reso eq 7: lim=0.00194444 ; reso eq 6: lim=0.00166667 ; reso eq 1: lim=0.000277778 ; ENDCASE scrncrl=STRTRIM(crn,2)+':'+STRTRIM(FIX(crl),2) spawn,'times ct'+scrncrl+' > outdata.d' date0=' ' get_lun,unit openr,unit,'outdata.d' readf,unit,date0 free_lun,unit spawn,'rm outdata.d' ; date0_crncrl,crn,crl,date0 year = fix(strmid(date0,0,4)) month = fix(strmid(date0,5,2)) day = fix(strmid(date0,8,2)) hrs00=FIX(STRMID(date0,11,2)) hrs01=FIX(STRMID(date0,15,2))/60.+FIX(STRMID(date0,19,2))/3600. hrs0=hrs00+hrs01 days0=day+hrs0/24. crl_yyyymmddtime,year,month,day,hrs0,crli dcl=crli-crl if ABS(dcl) gt 100 then crli=crli+360 dcl=crli-crl if keyword_set(plt) then print,'date0,crl,First crli:',date0,crl,crli CASE 1 OF ; Case 1 dcl gt 0.0008: begin if hrs00 eq 23 then begin day=day+1 hrs0=hrs01 hrs=hrs0 endif else hrs=hrs0 lbl1: hrs=hrs+lim ;hrs=hrs+1. crl_yyyymmddtime,year,month,day,hrs,crli dcl=crli-crl if ABS(dcl) gt 100 then crli=crli+360 dcl=crli-crl if keyword_set(plt) then print,'C1-crli,dcl:',crli,dcl if dcl gt 0.0008 then goto, lbl1 else day1=day+hrs/24. end ; Case 2 ; dcl lt -0.0005: begin dcl lt -0.0008: begin if hrs00 eq 0 then begin day=day-1 hrs0=24+hrs01 hrs=hrs0 endif else hrs=hrs0 lbl3: hrs=hrs-lim crl_yyyymmddtime,year,month,day,hrs,crli dcl=crli-crl if keyword_set(plt) then print,'C2-day,hrs,crli,dcl:',day,hrs,crli,dcl ; if crli lt 5 then return if dcl lt -0.0008 then goto, lbl3 else day1=day+hrs/24. end else: day1=day+hrs0/24. ENDCASE hrs1=(day1-day)*24. hh=FIX(hrs1) & mm=FIX((hrs1-hh)*60) & ss=FIX((hrs1-hh)*3600-mm*60) if hh eq 24 then begin day=day+1 hh=0 endif date_year_sec,year,month,day,hh,mm,ss,date1 ; if keyword_set(plt) then begin print,'Orig. crl and date0 from times:',crl,' ',date0 print,'Last crli and date1 :',crli,' ',date1 ; endif end