]> source.dussan.org Git - poi.git/commitdiff
Fix inspired by bug #48872 - allow DateFormatter.formatRawCellContents to handle...
authorNick Burch <nick@apache.org>
Tue, 1 Jun 2010 15:31:51 +0000 (15:31 +0000)
committerNick Burch <nick@apache.org>
Tue, 1 Jun 2010 15:31:51 +0000 (15:31 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@950117 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/ss/usermodel/DataFormatter.java
src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java

index d1cae47add2aa350f71f9b087c2866d7b2e69111..1b213bb52e64ba5976f5f44c2b79a9b2fd12b1ae 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.7-SNAPSHOT" date="2010-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">48872 - allow DateFormatter.formatRawCellContents to handle 1904 as well as 1900 dates</action>
            <action dev="POI-DEVELOPERS" type="fix">48872 - handle MMMMM and elapsed time formatting rules in DataFormatter</action>
            <action dev="POI-DEVELOPERS" type="fix">48872 - handle zero formatting rules, and better color detection in DataFormatter</action>
            <action dev="POI-DEVELOPERS" type="fix">48872 - support for more kinds of formatting in DataFormatter</action>
index 029f24cd40aff3900bab631fa6a1448a0ae519e1..d0d07c0a3ebbf73215d697e18d1d549b9028f743 100644 (file)
@@ -511,6 +511,14 @@ public class DataFormatter {
      * @see #formatCellValue(Cell)
      */
     public String formatRawCellContents(double value, int formatIndex, String formatString) {
+       return formatRawCellContents(value, formatIndex, formatString, false);
+    }
+    /**
+     * Formats the given raw cell value, based on the supplied
+     *  format index and string, according to excel style rules.
+     * @see #formatCellValue(Cell)
+     */
+    public String formatRawCellContents(double value, int formatIndex, String formatString, boolean use1904Windowing) {
         // Is it a date?
         if(DateUtil.isADateFormat(formatIndex,formatString) &&
                 DateUtil.isValidExcelDate(value)) {
@@ -519,7 +527,7 @@ public class DataFormatter {
                // Hint about the raw excel value
                ((ExcelStyleDateFormatter)dateFormat).setDateToBeFormatted(value);
             }
-            Date d = DateUtil.getJavaDate(value);
+            Date d = DateUtil.getJavaDate(value, use1904Windowing);
             return performDateFormatting(d, dateFormat);
         }
         // else Number
index bc3bb678479df4004219b89759ee4470faa7572b..35be8c4ff15f18b3a6cd28c437cb610f5144a6db 100644 (file)
 package org.apache.poi.ss.usermodel;
 
 import java.util.Calendar;
-import java.util.Date;
 import java.util.Locale;
 
-import org.apache.poi.hssf.usermodel.TestHSSFDataFormatter;
-
 import junit.framework.TestCase;
 
+import org.apache.poi.hssf.usermodel.TestHSSFDataFormatter;
+
 /**
  * Tests of {@link DataFormatter}
  *
@@ -189,4 +188,12 @@ public class TestDataFormatter extends TestCase {
        assertEquals("60:00", dfUS.formatRawCellContents(1*hour, -1, "[mm]:ss"));
        assertEquals("120:00", dfUS.formatRawCellContents(2*hour, -1, "[mm]:ss"));
     }
+    
+    public void testDateWindowing() {
+       DataFormatter dfUS = new DataFormatter(Locale.US);
+       
+       assertEquals("1899-12-31 00:00:00", dfUS.formatRawCellContents(0.0, -1, "yyyy-mm-dd hh:mm:ss"));
+       assertEquals("1899-12-31 00:00:00", dfUS.formatRawCellContents(0.0, -1, "yyyy-mm-dd hh:mm:ss", false));
+       assertEquals("1904-01-01 00:00:00", dfUS.formatRawCellContents(0.0, -1, "yyyy-mm-dd hh:mm:ss", true));
+    }
 }