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