diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4bd7df832..8b788a8dd 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@
* 【core 】 list 为空时,CollUtil.max等返回null而非异常(pr#1027@Gitee)
* 【poi 】 ExcelReader.getWriter逻辑变更,当从非文件读取时,获取sheet,而非空表格。
* 【core 】 Ipv4Util 新增方法:检测指定 IP 地址是否匹配通配符(pr#3171@Github)
+* 【core 】 DateUtil.parse适配6位毫秒格式(issue#I7H34N@Gitee)
### 🐞Bug修复
* 【core 】 修复MapUtil工具使用filter方法构造传入参数结果问题(issue#3162@Github)
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 e7df01330..a29962c3a 100755
--- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
@@ -856,7 +856,8 @@ public class DateUtil extends CalendarUtil {
final int patternLength = DatePattern.UTC_MS_PATTERN.length();
// 格式类似:2018-09-13T05:34:31.999Z,-4表示减去4个单引号的长度
// -4 ~ -6范围表示匹配毫秒1~3位的情况
- if (length <= patternLength - 4 && length >= patternLength - 6) {
+ if (length <= patternLength && length >= patternLength - 6) {
+ // issue#I7H34N,支持最多6位毫秒
return parse(utcString, DatePattern.UTC_MS_FORMAT);
}
} else if (StrUtil.contains(utcString, '+')) {
diff --git a/hutool-core/src/main/java/cn/hutool/core/io/FileTypeUtil.java b/hutool-core/src/main/java/cn/hutool/core/io/FileTypeUtil.java
index 99decbc7c..99bf5a9c9 100644
--- a/hutool-core/src/main/java/cn/hutool/core/io/FileTypeUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/io/FileTypeUtil.java
@@ -78,7 +78,7 @@ public class FileTypeUtil {
/**
* 根据文件流的头部信息获得文件类型
* 注意此方法会读取头部一些bytes,造成此流接下来读取时缺少部分bytes
- * 因此如果想服用此流,流需支持{@link InputStream#reset()}方法。
+ * 因此如果想复用此流,流需支持{@link InputStream#reset()}方法。
* @param in {@link InputStream}
* @param isExact 是否精确匹配,如果为false,使用前64个bytes匹配,如果为true,使用前8192bytes匹配
* @return 类型,文件的扩展名,未找到为{@code null}
@@ -93,7 +93,7 @@ public class FileTypeUtil {
/**
* 根据文件流的头部信息获得文件类型
* 注意此方法会读取头部64个bytes,造成此流接下来读取时缺少部分bytes
- * 因此如果想服用此流,流需支持{@link InputStream#reset()}方法。
+ * 因此如果想复用此流,流需支持{@link InputStream#reset()}方法。
* @param in {@link InputStream}
* @return 类型,文件的扩展名,未找到为{@code null}
* @throws IORuntimeException 读取流引起的异常
@@ -105,7 +105,7 @@ public class FileTypeUtil {
/**
* 根据文件流的头部信息获得文件类型
* 注意此方法会读取头部64个bytes,造成此流接下来读取时缺少部分bytes
- * 因此如果想服用此流,流需支持{@link InputStream#reset()}方法。
+ * 因此如果想复用此流,流需支持{@link InputStream#reset()}方法。
*
*
* 1、无法识别类型默认按照扩展名识别 @@ -125,7 +125,7 @@ public class FileTypeUtil { /** * 根据文件流的头部信息获得文件类型 * 注意此方法会读取头部一些bytes,造成此流接下来读取时缺少部分bytes
- * 因此如果想服用此流,流需支持{@link InputStream#reset()}方法。 + * 因此如果想复用此流,流需支持{@link InputStream#reset()}方法。 * ** 1、无法识别类型默认按照扩展名识别 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 b3ac6393b..271590442 100755 --- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java @@ -1148,4 +1148,11 @@ public class DateUtilTest { final Calendar c = DateUtil.calendar(date); Assert.assertEquals(DateUtil.date(c), date); } + + @Test + public void issueI7H34NTest() { + final DateTime parse = DateUtil.parse("2019-10-22T09:56:03.000123Z"); + Assert.assertNotNull(parse); + Assert.assertEquals("2019-10-22 09:56:03", parse.toString()); + } } diff --git a/hutool-json/src/test/java/cn/hutool/json/IssueI7GPGXTest.java b/hutool-json/src/test/java/cn/hutool/json/IssueI7GPGXTest.java new file mode 100755 index 000000000..9056df589 --- /dev/null +++ b/hutool-json/src/test/java/cn/hutool/json/IssueI7GPGXTest.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package cn.hutool.json; + +import cn.hutool.core.lang.Pair; +import cn.hutool.core.lang.TypeReference; +import org.junit.Test; + +public class IssueI7GPGXTest { + @Test + public void toBeanTest() throws NoSuchMethodException { + PairhutoolPair = getHutoolPair(); + String a = JSONUtil.toJsonStr(hutoolPair); + System.out.println(a); + System.out.println("====================================="); + Pair pair = JSONUtil.toBean(a, new TypeReference >() {}, false); + System.out.println(JSONUtil.toJsonStr(pair)); + } + + public static Pair getHutoolPair() { + return new Pair<>("test1", true); + } +}