aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Burch <nick@apache.org>2008-02-07 12:39:12 +0000
committerNick Burch <nick@apache.org>2008-02-07 12:39:12 +0000
commit212604f51ee3ae2d2e7b19ef9e2eedea41aefbb8 (patch)
treeb52a2f49de57c241c489f447275513fa416796b5
parent4ab00acc7cf8a56a22153c84ec203707cd413846 (diff)
downloadpoi-212604f51ee3ae2d2e7b19ef9e2eedea41aefbb8.tar.gz
poi-212604f51ee3ae2d2e7b19ef9e2eedea41aefbb8.zip
Patch from bug #44373 - Have HSSFDateUtil.isADateFormat support more date formats
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@619382 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/documentation/content/xdocs/changes.xml1
-rw-r--r--src/documentation/content/xdocs/status.xml1
-rw-r--r--src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java6
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java21
4 files changed, 25 insertions, 4 deletions
diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml
index 2b017fee7b..aee0a20997 100644
--- a/src/documentation/content/xdocs/changes.xml
+++ b/src/documentation/content/xdocs/changes.xml
@@ -36,6 +36,7 @@
<!-- Don't forget to update status.xml too! -->
<release version="3.1-beta1" date="2008-??-??">
+ <action dev="POI-DEVELOPERS" type="fix">44373 - Have HSSFDateUtil.isADateFormat recognize more formats as being dates</action>
<action dev="POI-DEVELOPERS" type="add">37923 - Support for Excel hyperlinks</action>
<action dev="POI-DEVELOPERS" type="add">Implement hashCode() and equals(obj) on HSSFFont and HSSFCellStyle</action>
<action dev="POI-DEVELOPERS" type="fix">44345 - Implement CountA, CountIf, Index, Rows and Columns functions</action>
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml
index feab74a973..084aba2afe 100644
--- a/src/documentation/content/xdocs/status.xml
+++ b/src/documentation/content/xdocs/status.xml
@@ -33,6 +33,7 @@
<!-- Don't forget to update changes.xml too! -->
<changes>
<release version="3.1-beta1" date="2008-??-??">
+ <action dev="POI-DEVELOPERS" type="fix">44373 - Have HSSFDateUtil.isADateFormat recognize more formats as being dates</action>
<action dev="POI-DEVELOPERS" type="add">37923 - Support for Excel hyperlinks</action>
<action dev="POI-DEVELOPERS" type="add">Implement hashCode() and equals(obj) on HSSFFont and HSSFCellStyle</action>
<action dev="POI-DEVELOPERS" type="fix">44345 - Implement CountA, CountIf, Index, Rows and Columns functions</action>
diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java b/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java
index fb3a92df86..d0ad798afa 100644
--- a/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java
+++ b/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java
@@ -208,9 +208,9 @@ public class HSSFDateUtil
// who knows what that starting bit is all about
fs = fs.replaceAll("\\[\\$\\-.*?\\]", "");
- // Otherwise, check it's only made up of:
- // y m d - / ,
- if(fs.matches("^[ymd\\-/, ]+$")) {
+ // Otherwise, check it's only made up, in any case, of:
+ // y m d h s - / , . :
+ if(fs.matches("^[yYmMdDhHsS\\-/,. :]+$")) {
return true;
}
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
index 6b37f749ee..08874399eb 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
@@ -228,6 +228,7 @@ public class TestHSSFDateUtil
"yyyy-mm-dd", "yyyy/mm/dd", "yy/mm/dd", "yy/mmm/dd",
"dd/mm/yy", "dd/mm/yyyy", "dd/mmm/yy",
"dd-mm-yy", "dd-mm-yyyy",
+ "DD-MM-YY", "DD-mm-YYYY",
"dd\\-mm\\-yy", // Sometimes escaped
// These crazy ones are valid
@@ -242,9 +243,18 @@ public class TestHSSFDateUtil
assertTrue( HSSFDateUtil.isADateFormat(formatId, formats[i]) );
}
+ // Then time based ones too
+ formats = new String[] {
+ "yyyy-mm-dd hh:mm:ss", "yyyy/mm/dd HH:MM:SS",
+ "mm/dd HH:MM", "yy/mmm/dd SS",
+ };
+ for(int i=0; i<formats.length; i++) {
+ assertTrue( HSSFDateUtil.isADateFormat(formatId, formats[i]) );
+ }
+
// Then invalid ones
formats = new String[] {
- "yyyy:mm:dd",
+ "yyyy*mm*dd",
"0.0", "0.000",
"0%", "0.0%",
"", null
@@ -252,6 +262,15 @@ public class TestHSSFDateUtil
for(int i=0; i<formats.length; i++) {
assertFalse( HSSFDateUtil.isADateFormat(formatId, formats[i]) );
}
+
+ // And these are ones we probably shouldn't allow,
+ // but would need a better regexp
+ formats = new String[] {
+ "yyyy:mm:dd",
+ };
+ for(int i=0; i<formats.length; i++) {
+ // assertFalse( HSSFDateUtil.isADateFormat(formatId, formats[i]) );
+ }
}
/**