From: Nick Burch Date: Fri, 28 May 2010 16:47:01 +0000 (+0000) Subject: Support a couple more crazy formats, as identified in bug #48872, plus test them X-Git-Tag: REL_3_7_BETA1~41 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e139dd8ecf9d912f6fe059b1357250cd53abe943;p=poi.git Support a couple more crazy formats, as identified in bug #48872, plus test them git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@949226 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/ss/usermodel/DateUtil.java b/src/java/org/apache/poi/ss/usermodel/DateUtil.java index 238eefb920..fb2bfd94d2 100644 --- a/src/java/org/apache/poi/ss/usermodel/DateUtil.java +++ b/src/java/org/apache/poi/ss/usermodel/DateUtil.java @@ -52,7 +52,7 @@ public class DateUtil { */ private static final Pattern date_ptrn1 = Pattern.compile("^\\[\\$\\-.*?\\]"); private static final Pattern date_ptrn2 = Pattern.compile("^\\[[a-zA-Z]+\\]"); - private static final Pattern date_ptrn3 = Pattern.compile("^[yYmMdDhHsS\\-/,. :\\\\]+[ampAMP/]*$"); + private static final Pattern date_ptrn3 = Pattern.compile("^[yYmMdDhHsS\\-/,. :\"\\\\]+0?[ampAMP/]*$"); /** * Given a Date, converts it into a double representing its internal Excel representation, diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java index 1becfcb36d..cab1467d8f 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java @@ -242,8 +242,8 @@ public final class TestHSSFDateUtil extends TestCase { "dd.mm.yyyy", "dd\\.mm\\.yyyy", "dd\\ mm\\.yyyy AM", "dd\\ mm\\.yyyy pm", "dd\\ mm\\.yyyy\\-dd", "[h]:mm:ss", - - //YK: TODO "mm:ss.0" is a built-in date format which is not recognized by DateUtil.isInternalDateFormat + "mm/dd/yy", "\"mm\"/\"dd\"/\"yy\"", + "m\\/d\\/yyyy", // These crazy ones are valid "yyyy-mm-dd;@", "yyyy/mm/dd;@", @@ -269,7 +269,9 @@ public final class TestHSSFDateUtil extends TestCase { "mm/dd HH:MM", "yy/mmm/dd SS", "mm/dd HH:MM AM", "mm/dd HH:MM am", "mm/dd HH:MM PM", "mm/dd HH:MM pm", - "m/d/yy h:mm AM/PM" + "m/d/yy h:mm AM/PM", + "hh:mm:ss", "hh:mm:ss.0", "mm:ss.0", + }; for(int i=0; i