changeset 12664:f4b39e33e0d0 octave-forge

make time units more flexible
author abarth93
date Wed, 08 Jul 2015 08:37:06 +0000
parents 7c7960da6a76
children 393b940d7ee2
files extra/ncArray/inst/ncreadtime.m extra/ncArray/inst/nctimeunits.m
diffstat 2 files changed, 20 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/extra/ncArray/inst/ncreadtime.m	Wed Jul 08 08:06:05 2015 +0000
+++ b/extra/ncArray/inst/ncreadtime.m	Wed Jul 08 08:37:06 2015 +0000
@@ -7,7 +7,7 @@
 
 function t = ncreadtime(filename,varname)
 
-t = ncread(filename,varname);
+t = double(ncread(filename,varname));
 units = ncreadatt(filename,varname,'units');
 
 [t0,f] = nctimeunits(units);
--- a/extra/ncArray/inst/nctimeunits.m	Wed Jul 08 08:06:05 2015 +0000
+++ b/extra/ncArray/inst/nctimeunits.m	Wed Jul 08 08:37:06 2015 +0000
@@ -18,7 +18,7 @@
 l = strfind(u,'since');
 
 if length(l) ~= 1
-    error(['time units sould expect one "since": "' u '"']);
+  error(['time units sould expect one "since": "' u '"']);
 end
 
 period = strtrim(lower(u(1:l-1)));
@@ -27,39 +27,43 @@
 if strcmp(period,'millisec') || strcmp(period,'msec')
   f = 1/(24*60*60*1000);
 elseif strcmp(period,'second') || strcmp(period,'seconds') ...
-   || strcmp(period,'s') || strcmp(period,'sec')
+      || strcmp(period,'s') || strcmp(period,'sec')
   f = 1/(24*60*60);
 elseif strcmp(period,'minute') || strcmp(period,'minutes') ...
-       || strcmp(period,'min')
+      || strcmp(period,'min')
   f = 1/(24*60);
 elseif strcmp(period,'hour') || strcmp(period,'hours') ...
-       || strcmp(period,'hr')
+      || strcmp(period,'hr')
   f = 1/24;
 elseif strcmp(period,'day') || strcmp(period,'days')
   f = 1;
 elseif strcmp(period,'week') || strcmp(period,'weeks')
   f = 1/(24*60*60*7);
 elseif strcmp(period,'year') || strcmp(period,'years') ...
-       strcmp(period,'yr')
+      strcmp(period,'yr')
   f = year_in_days;
 elseif strcmp(period,'month') || strcmp(period,'months') ...
-       strcmp(period,'mon')
+      strcmp(period,'mon')
   f = year_in_days/12;
 else
   error(['unknown units "' period '"']);
 end
-  
+
 
-try
-  t0 = datenum(reference_date,'yyyy-mm-dd HH:MM:SS');
-catch
+if strcmp(reference_date,'1900-01-01 00:00:0.0')
+  t0 = datenum(1900,1,1);
+else
   try
-    t0 = datenum(reference_date,'yyyy-mm-ddTHH:MM:SS');
-  catch    
+    t0 = datenum(reference_date,'yyyy-mm-dd HH:MM:SS');
+  catch
     try
-      t0 = datenum(reference_date,'yyyy-mm-dd');
-    catch
-      error(['date format is not recogized ' reference_date])
+      t0 = datenum(reference_date,'yyyy-mm-ddTHH:MM:SS');
+    catch    
+      try
+        t0 = datenum(reference_date,'yyyy-mm-dd');
+      catch
+        error(['date format is not recogized ' reference_date])
+      end
     end
   end
 end