diff options
author | Nick Burch <nick@apache.org> | 2008-02-07 12:39:12 +0000 |
---|---|---|
committer | Nick Burch <nick@apache.org> | 2008-02-07 12:39:12 +0000 |
commit | 212604f51ee3ae2d2e7b19ef9e2eedea41aefbb8 (patch) | |
tree | b52a2f49de57c241c489f447275513fa416796b5 | |
parent | 4ab00acc7cf8a56a22153c84ec203707cd413846 (diff) | |
download | poi-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
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]) ); + } } /** |