From 442e7cc7212a5c3b64d9b6801fcd7fab6b2e059a Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Fri, 20 Jan 2017 05:35:57 +0000 Subject: [PATCH] bug 60031: DataFormatter parses months incorrectly when put at the end of date segment. Thanks to Andrzej Witecki git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1779564 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/ss/usermodel/DataFormatter.java | 3 +++ .../apache/poi/ss/usermodel/TestDataFormatter.java | 12 ++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java index 61a5092f22..94740e9d2b 100644 --- a/src/java/org/apache/poi/ss/usermodel/DataFormatter.java +++ b/src/java/org/apache/poi/ss/usermodel/DataFormatter.java @@ -582,6 +582,9 @@ public class DataFormatter implements Observer { } } else { + if (Character.isWhitespace(c)){ + ms.clear(); + } sb.append(c); } } diff --git a/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java b/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java index 50276ae281..8e6e38932d 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java +++ b/src/testcases/org/apache/poi/ss/usermodel/TestDataFormatter.java @@ -815,5 +815,17 @@ public class TestDataFormatter { assertEquals("5.6789", formatter.formatCellValue(cell, evaluator)); wb.close(); + } + + /** + * bug 60031: DataFormatter parses months incorrectly when put at the end of date segment + */ + @Test + public void testBug60031() { + // 23-08-2016 08:51:01 which is 42605.368761574071 as double will be parsed + // with format "yyyy-dd-MM HH:mm:ss" into "2016-23-51 08:51:01". + DataFormatter dfUS = new DataFormatter(Locale.US); + assertEquals("2016-23-08 08:51:01", dfUS.formatRawCellContents(42605.368761574071, -1, "yyyy-dd-MM HH:mm:ss")); + assertEquals("2017-12-01 January 09:54:33", dfUS.formatRawCellContents(42747.412892397523, -1, "yyyy-dd-MM MMMM HH:mm:ss")); } } -- 2.39.5