diff --git a/src/documentation/content/xdocs/changes.xml b/src/documentation/content/xdocs/changes.xml index 2b017fee7..aee0a2099 100644 --- a/src/documentation/content/xdocs/changes.xml +++ b/src/documentation/content/xdocs/changes.xml @@ -36,6 +36,7 @@ + 44373 - Have HSSFDateUtil.isADateFormat recognize more formats as being dates 37923 - Support for Excel hyperlinks Implement hashCode() and equals(obj) on HSSFFont and HSSFCellStyle 44345 - Implement CountA, CountIf, Index, Rows and Columns functions diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index feab74a97..084aba2af 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -33,6 +33,7 @@ + 44373 - Have HSSFDateUtil.isADateFormat recognize more formats as being dates 37923 - Support for Excel hyperlinks Implement hashCode() and equals(obj) on HSSFFont and HSSFCellStyle 44345 - Implement CountA, CountIf, Index, Rows and Columns functions diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java b/src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java index fb3a92df8..d0ad798af 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 6b37f749e..08874399e 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