Ignore:
Timestamp:
03/14/12 09:45:50 (12 years ago)
Author:
smasson
Message:

take into accound hh:mm:ss when reading time in netcdf files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SRC/ReadWrite/ncdf_gettime.pro

    r470 r474  
    7272    tobeclosed = 1 
    7373  ENDIF 
     74  IF n_elements(caller) EQ 0 THEN caller = 'read_ncdf' 
    7475  inq = ncdf_inquire(cdfid) 
    7576;---------------------------------------------------- 
     
    204205    ENDIF 
    205206    start = str_sep(words[2], '-') 
     207    IF stregex(value, '[^ ]* since ([0-9]){1,4}-([0-9]){1,2}-([0-9]){1,2} ([0-9]){1,2}:([0-9]){1,2}:([0-9]){1,2}', /boolean) EQ 0 THEN BEGIN 
     208      print, 'hh:mm:ss of the calendar origin not found... -> start calendar at 00:00:00' 
     209      start = [start, '0', '0', '0'] 
     210    ENDIF ELSE start = [start, str_sep(words[3], ':')] 
    206211  ENDIF ELSE units = value 
    207212;---------------------------------------------------- 
     
    212217  case units OF 
    213218    'true julian day': 
    214     'second':time = julday(start[1], start[2], start[0], 0, 0, 0)+time/86400.d 
    215     'minute':time = julday(start[1], start[2], start[0], 0, 0, 0)+time/1440.d 
    216     'hour':time = julday(start[1], start[2], start[0], 0, 0, 0)+time/24.d 
    217     'day':time = julday(start[1], start[2], start[0], 0, 0, 0)+time 
     219    'second':time = julday(start[1], start[2], start[0], start[3], start[4], start[5])+time/86400.d 
     220    'minute':time = julday(start[1], start[2], start[0], start[3], start[4], start[5])+time/1440.d 
     221    'hour':time = julday(start[1], start[2], start[0], start[3], start[4], start[5])+time/24.d 
     222    'day':time = julday(start[1], start[2], start[0], start[3], start[4], start[5])+time 
    218223    'month':BEGIN 
    219224      if total(fix(time) NE time) NE 0 then $ ; we switch to days with 30d/m 
    220          time = julday(start[1], start[2], start[0], 0, 0, 0) + round(time*30) $ 
    221       ELSE time = julday(start[1]+fix(time), replicate(start[2], jpt), replicate(start[0], jpt), 0, 0, 0) 
     225         time = julday(start[1], start[2], start[0], start[3], start[4], start[5]) + round(time*30) $ 
     226      ELSE time = julday(start[1]+fix(time), replicate(start[2], jpt), replicate(start[0], jpt), start[3], start[4], start[5]) 
    222227    END 
    223228    'year':BEGIN 
    224229      if total(fix(time) NE time) NE 0 then $ ; we switch to days with 365d/y 
    225          time = julday(start[1], start[2], start[0], 0, 0, 0) + round(time*365) $ 
    226       ELSE time = julday(replicate(start[1], jpt), replicate(start[2], jpt), start[0]+fix(time), 0, 0, 0) 
     230         time = julday(start[1], start[2], start[0], start[3], start[4], start[5]) + round(time*365) $ 
     231      ELSE time = julday(replicate(start[1], jpt), replicate(start[2], jpt), start[0]+fix(time), start[3], start[4], start[5]) 
    227232    END 
    228233  ENDCASE 
Note: See TracChangeset for help on using the changeset viewer.