diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c4ec48a1..b047caa06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ ### 新特性 ### Bug修复 +* 【core 】 修复DateUtil.parse解析2020-5-8 3:12:13错误问题(issue#I1IZA3@Gitee) ------------------------------------------------------------------------------------------------------------- ## 5.3.6 (2020-05-30) diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java index 34bff8283..3a2e15dd0 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java @@ -909,37 +909,29 @@ public class DateUtil extends CalendarUtil { return parseUTC(dateStr); } - if (length == DatePattern.NORM_DATETIME_PATTERN.length()) { - // yyyy-MM-dd HH:mm:ss - return parseDateTime(dateStr); - } else if (length == DatePattern.NORM_DATE_PATTERN.length()) { - // yyyy-MM-dd - return parseDate(dateStr); - } else if (length == DatePattern.NORM_DATETIME_MINUTE_PATTERN.length()) { - // yyyy-MM-dd HH:mm - return parse(normalize(dateStr), DatePattern.NORM_DATETIME_MINUTE_FORMAT); - } else if (length >= DatePattern.NORM_DATETIME_MS_PATTERN.length() - 2) { - //yyyy-MM-dd HH:mm:ss.SSS - return parse(normalize(dateStr), DatePattern.NORM_DATETIME_MS_FORMAT); - } - - //含有单个位数数字的日期时间格式 + //标准日期格式(包括单个数字的日期时间) dateStr = normalize(dateStr); if (ReUtil.isMatch(DatePattern.REGEX_NORM, dateStr)) { final int colonCount = StrUtil.count(dateStr, CharUtil.COLON); switch (colonCount) { case 0: // yyyy-MM-dd - return parseDate(dateStr); + return parse(dateStr, DatePattern.NORM_DATE_FORMAT); case 1: // yyyy-MM-dd HH:mm - return parse(normalize(dateStr), DatePattern.NORM_DATETIME_MINUTE_FORMAT); + return parse(dateStr, DatePattern.NORM_DATETIME_MINUTE_FORMAT); case 2: // yyyy-MM-dd HH:mm:ss - return parseDateTime(dateStr); + return parse(dateStr, DatePattern.NORM_DATETIME_FORMAT); } } + // 长度判断 + if (length >= DatePattern.NORM_DATETIME_MS_PATTERN.length() - 2) { + //yyyy-MM-dd HH:mm:ss.SSS + return parse(dateStr, DatePattern.NORM_DATETIME_MS_FORMAT); + } + // 没有更多匹配的时间格式 throw new DateException("No format fit for date String [{}] !", dateStr); } diff --git a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java index 42e95c441..d8e2d2b68 100644 --- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java @@ -777,5 +777,7 @@ public class DateUtilTest { Assert.assertEquals("2020-05-08 03:12:03", dateTime.toString()); dateTime = DateUtil.parse("2020-5-8 3:2:3"); Assert.assertEquals("2020-05-08 03:02:03", dateTime.toString()); + dateTime = DateUtil.parse("2020-5-8 3:12:13"); + Assert.assertEquals("2020-05-08 03:12:13", dateTime.toString()); } } diff --git a/hutool-crypto/pom.xml b/hutool-crypto/pom.xml index 205a932e9..cf470e34b 100644 --- a/hutool-crypto/pom.xml +++ b/hutool-crypto/pom.xml @@ -18,7 +18,7 @@ - 1.64 + 1.65.01