diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DatePattern.java b/hutool-core/src/main/java/cn/hutool/core/date/DatePattern.java index 4e4640040..7c0f24ee5 100644 --- a/hutool-core/src/main/java/cn/hutool/core/date/DatePattern.java +++ b/hutool-core/src/main/java/cn/hutool/core/date/DatePattern.java @@ -285,6 +285,15 @@ public class DatePattern { */ public static final FastDateFormat UTC_WITH_XXX_OFFSET_FORMAT = FastDateFormat.getInstance(UTC_WITH_XXX_OFFSET_PATTERN); + /** + * UTC时间:yyyy-MM-dd'T'HH:mmXXX + */ + public static final String UTC_SIMPLE_MINUTE_WITH_XXX_OFFSET_PATTERN = "yyyy-MM-dd'T'HH:mmXXX"; + /** + * UTC时间{@link FastDateFormat}:yyyy-MM-dd'T'HH:mmXXX + */ + public static final FastDateFormat UTC_SIMPLE_MINUTE_WITH_XXX_OFFSET_FORMAT = FastDateFormat.getInstance(UTC_SIMPLE_MINUTE_WITH_XXX_OFFSET_PATTERN); + /** * UTC时间:yyyy-MM-dd'T'HH:mm:ss.SSS'Z' */ 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 eb7fcdcfd..ba042718f 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 @@ -901,6 +901,9 @@ public class DateUtil extends CalendarUtil { // 带毫秒,格式类似:2018-09-13T05:34:31.999+08:00 iso8601String = normalizeMillSeconds(iso8601String, ".", "+"); return parse(iso8601String, DatePattern.UTC_MS_WITH_XXX_OFFSET_FORMAT); + } else if (iso8601String.length() == 22 && StrUtil.count(iso8601String, ':') == 2) { + // 精确到分钟,格式类似:2025-07-28T20:00+08:00 + return parse(iso8601String, DatePattern.UTC_SIMPLE_MINUTE_WITH_XXX_OFFSET_FORMAT); } else { // 格式类似:2018-09-13T05:34:31+08:00 return parse(iso8601String, DatePattern.UTC_WITH_XXX_OFFSET_FORMAT); 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 2dcfbc6b3..64922020b 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 @@ -667,6 +667,12 @@ public class DateUtilTest { dateStr = dt.toString(simpleDateFormat); assertEquals("2018-09-13 13:34:39.999", dateStr); + dateStr1 = "2025-07-28T20:00+08:00"; + dt = DateUtil.parse(dateStr1); + assert dt != null; + dateStr = dt.toString(); + assertEquals("2025-07-28 20:00:00", dateStr); + // 使用UTC时区 dateStr1 = "2018-09-13T13:34:39.99"; dt = DateUtil.parse(dateStr1);