]> source.dussan.org Git - poi.git/commitdiff
Patch from bug #44373 - Have HSSFDateUtil.isADateFormat support more date formats
authorNick Burch <nick@apache.org>
Thu, 7 Feb 2008 12:39:12 +0000 (12:39 +0000)
committerNick Burch <nick@apache.org>
Thu, 7 Feb 2008 12:39:12 +0000 (12:39 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@619382 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/changes.xml
src/documentation/content/xdocs/status.xml
src/java/org/apache/poi/hssf/usermodel/HSSFDateUtil.java
src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java

index 2b017fee7b3927cc973950fdc0443a1dbf80c4b3..aee0a20997c63082172c9be492bcc51261b7491c 100644 (file)
@@ -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>
index feab74a973b8a4334e516642c58814695c0a27b0..084aba2afe6fb7fb974f62df825b04f7249bc008 100644 (file)
@@ -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>
index fb3a92df86fa420c3c312bfe347dae2034145a75..d0ad798afa2c5b5737b80e5e3785ae29c4d5d0b6 100644 (file)
@@ -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;
        }
        
index 6b37f749eefa799c8016e22edabdf797e1d41c79..08874399eb6b2a926b4c0850ad17daa7f60b1347 100644 (file)
@@ -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]) );
+       }
     }
 
     /**