Fix inspired by bug #48872 - allow DateFormatter.formatRawCellContents to handle 1904 as well as 1900 dates
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@950117 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fafc079bfe
commit
e6879026b5
@ -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>
|
||||
|
@ -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
|
||||
|
@ -18,13 +18,12 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user