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 {
+ Pair hutoolPair = 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);
+ }
+}