changeset 23303:4aa13310250c

datestr.m: Do automatic format detection across all entries in vector (bug #50558). * datestr.m: Move automatic format selection which is executed just once based on first entry in vector, to be outside of loop and to look at all entries in vector. Add BIST test for new behavior.
author Lars Kindermann
date Sat, 18 Mar 2017 22:14:58 -0700
parents 78cf75ffd382
children fb495c47e82d
files scripts/time/datestr.m
diffstat 1 files changed, 14 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/time/datestr.m	Sat Mar 18 10:15:50 2017 -0700
+++ b/scripts/time/datestr.m	Sat Mar 18 22:14:58 2017 -0700
@@ -194,19 +194,20 @@
     endif
   endif
 
+  ## automatic format selection
+  if (isempty (f))
+    if (v(:,4:6) == 0)
+      f = 1;
+    elseif (v(:,1:3) == [-1, 12, 31])
+      f = 16;
+    else
+      f = 0;
+    endif
+  endif
+
   retval = "";
   for i = 1 : rows (v)
 
-    if (isempty (f))
-      if (v(i,4:6) == 0)
-        f = 1;
-      elseif (v(i,1:3) == [-1, 12, 31])
-        f = 16;
-      else
-        f = 0;
-      endif
-    endif
-
     if (isnumeric (f))
       df = dateform{f + 1};
     else
@@ -349,6 +350,9 @@
 %!assert (datestr ([1944, 6, 6, 6, 30, 0], 0), "06-Jun-1944 06:30:00")
 ## Test fractional millisecond time extension
 %!assert (datestr (testtime, "HH:MM:SS:FFF"), "02:33:17:382")
+## Test automatic format detection over vectors
+%!assert (datestr ([2017 03 16 0 0 0; 2017 03 16 0 0 1]),
+%!        char ("16-Mar-2017 00:00:00", "16-Mar-2017 00:00:01"))
 
 ## Test input validation
 %!error datestr ()