This commit is contained in:
Looly 2020-06-02 17:30:37 +08:00
parent 0b74d3769d
commit 670cb3c10b
4 changed files with 14 additions and 19 deletions

View File

@ -7,6 +7,7 @@
### 新特性 ### 新特性
### Bug修复 ### Bug修复
* 【core 】 修复DateUtil.parse解析2020-5-8 3:12:13错误问题issue#I1IZA3@Gitee
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------
## 5.3.6 (2020-05-30) ## 5.3.6 (2020-05-30)

View File

@ -909,37 +909,29 @@ public class DateUtil extends CalendarUtil {
return parseUTC(dateStr); 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); dateStr = normalize(dateStr);
if (ReUtil.isMatch(DatePattern.REGEX_NORM, dateStr)) { if (ReUtil.isMatch(DatePattern.REGEX_NORM, dateStr)) {
final int colonCount = StrUtil.count(dateStr, CharUtil.COLON); final int colonCount = StrUtil.count(dateStr, CharUtil.COLON);
switch (colonCount) { switch (colonCount) {
case 0: case 0:
// yyyy-MM-dd // yyyy-MM-dd
return parseDate(dateStr); return parse(dateStr, DatePattern.NORM_DATE_FORMAT);
case 1: case 1:
// yyyy-MM-dd HH:mm // yyyy-MM-dd HH:mm
return parse(normalize(dateStr), DatePattern.NORM_DATETIME_MINUTE_FORMAT); return parse(dateStr, DatePattern.NORM_DATETIME_MINUTE_FORMAT);
case 2: case 2:
// yyyy-MM-dd HH:mm:ss // 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); throw new DateException("No format fit for date String [{}] !", dateStr);
} }

View File

@ -777,5 +777,7 @@ public class DateUtilTest {
Assert.assertEquals("2020-05-08 03:12:03", dateTime.toString()); Assert.assertEquals("2020-05-08 03:12:03", dateTime.toString());
dateTime = DateUtil.parse("2020-5-8 3:2:3"); dateTime = DateUtil.parse("2020-5-8 3:2:3");
Assert.assertEquals("2020-05-08 03:02:03", dateTime.toString()); 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());
} }
} }

View File

@ -18,7 +18,7 @@
<properties> <properties>
<!-- versions --> <!-- versions -->
<bouncycastle.version>1.64</bouncycastle.version> <bouncycastle.version>1.65.01</bouncycastle.version>
</properties> </properties>
<dependencies> <dependencies>