Author: nick
Date: Tue Feb 19 16:28:40 2013
New Revision: 1447798

URL: http://svn.apache.org/r1447798
Log:
Fix bug #54579 - Handle milliseconds in date formats eg ss.000

Modified:
    poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java
    poi/trunk/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java

Modified: 
poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java?rev=1447798&r1=1447797&r2=1447798&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java 
(original)
+++ poi/trunk/src/java/org/apache/poi/ss/usermodel/ExcelStyleDateFormatter.java 
Tue Feb 19 16:28:40 2013
@@ -84,7 +84,7 @@ public class ExcelStyleDateFormatter ext
         t = t.replaceAll("\\[mm\\]", String.valueOf(MM_BRACKET_SYMBOL));
         t = t.replaceAll("\\[s\\]", String.valueOf(S_BRACKET_SYMBOL));
         t = t.replaceAll("\\[ss\\]", String.valueOf(SS_BRACKET_SYMBOL));
-        t = t.replaceAll("s.000", "s.S");
+        t = t.replaceAll("s.000", "s.SSS");
         t = t.replaceAll("s.00", "s." + LL_BRACKET_SYMBOL);
         t = t.replaceAll("s.0", "s." + L_BRACKET_SYMBOL);
         return t;

Modified: 
poi/trunk/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java?rev=1447798&r1=1447797&r2=1447798&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java 
(original)
+++ poi/trunk/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java 
Tue Feb 19 16:28:40 2013
@@ -21,7 +21,9 @@
 
 package org.apache.poi.ss.usermodel;
 
+import java.text.DateFormat;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.Locale;
 
 import junit.framework.TestCase;
@@ -489,4 +491,36 @@ public class TestDataFormatter extends T
        fmt = "0 \"dollars and\" .00 \"cents\"";
        assertEquals("19 dollars and .99 cents", 
dfUS.formatRawCellContents(19.99, -1, fmt));
     }
+    
+    /**
+     * ExcelStyleDateFormatter should work for Milliseconds too
+     */
+    public void testExcelStyleDateFormatterStringOnMillis() {
+       // Test directly with the .000 style
+       DateFormat formatter1 = new ExcelStyleDateFormatter("ss.000");
+
+       assertEquals("00.001", formatter1.format(new Date(1L)));
+       assertEquals("00.010", formatter1.format(new Date(10L)));
+       assertEquals("00.100", formatter1.format(new Date(100L)));
+       assertEquals("01.000", formatter1.format(new Date(1000L)));
+       assertEquals("01.001", formatter1.format(new Date(1001L)));
+       assertEquals("10.000", formatter1.format(new Date(10000L)));
+       assertEquals("10.001", formatter1.format(new Date(10001L)));
+
+       // Test directly with the .SSS style
+       DateFormat formatter2 = new ExcelStyleDateFormatter("ss.SSS");
+       
+       assertEquals("00.001", formatter2.format(new Date(1L)));
+       assertEquals("00.010", formatter2.format(new Date(10L)));
+       assertEquals("00.100", formatter2.format(new Date(100L)));
+       assertEquals("01.000", formatter2.format(new Date(1000L)));
+       assertEquals("01.001", formatter2.format(new Date(1001L)));
+       assertEquals("10.000", formatter2.format(new Date(10000L)));
+       assertEquals("10.001", formatter2.format(new Date(10001L)));
+
+
+       // Test via DataFormatter
+       DataFormatter dfUS = new DataFormatter(Locale.US, true);
+       assertEquals("01.010", dfUS.formatRawCellContents(0.0000116898, -1, 
"ss.000"));
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to