From 47479e926233adffcc2e9981893ec8aec1b7edc1 Mon Sep 17 00:00:00 2001 From: qwding <761945125@qq.com> Date: Sat, 31 Jan 2026 14:13:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E5=8F=96=E5=B9=B6=E9=A2=84=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=97=A5=E6=9C=9F=E6=97=B6=E9=97=B4=E6=AD=A3=E5=88=99?= =?UTF-8?q?=E6=8F=90=E9=AB=98=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提取DateUtil#normalize 方法中 [/.年月] 和 [时分秒] 为静态常量,避免重复编译正则提升效率。 --- .../main/java/cn/hutool/core/date/DateUtil.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) 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 ba042718fc..dbca81500b 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 @@ -25,6 +25,7 @@ import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.function.Function; +import java.util.regex.Pattern; import java.util.stream.Collectors; /** @@ -44,6 +45,16 @@ public class DateUtil extends CalendarUtil { "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec", // 月份 "gmt", "ut", "utc", "est", "edt", "cst", "cdt", "mst", "mdt", "pst", "pdt"// 时间标准 }; + + /** + * 匹配日期分隔符(正斜杠、点、年、月),用于统一替换为横杠 + */ + private static final Pattern DATE_SEPARATOR_PATTERN = Pattern.compile("[/.年月]"); + + /** + * 匹配时间单位(时、分、秒),用于统一替换为冒号 匹配时间单位(时、分、秒),用于统一替换为冒号 + */ + private static final Pattern TIME_UNIT_PATTERN = Pattern.compile("[时分秒]"); /** * 当前时间,转换为{@link DateTime}对象 @@ -2408,14 +2419,14 @@ public class DateUtil extends CalendarUtil { final StringBuilder builder = StrUtil.builder(); // 日期部分("\"、"/"、"."、"年"、"月"都替换为"-") - String datePart = dateAndTime.get(0).replaceAll("[/.年月]", "-"); + String datePart = DATE_SEPARATOR_PATTERN.matcher(dateAndTime.get(0)).replaceAll("-"); datePart = StrUtil.removeSuffix(datePart, "日"); builder.append(datePart); // 时间部分 if (size == 2) { builder.append(' '); - String timePart = dateAndTime.get(1).replaceAll("[时分秒]", ":"); + String timePart = TIME_UNIT_PATTERN.matcher(dateAndTime.get(1)).replaceAll(":"); timePart = StrUtil.removeSuffix(timePart, ":"); //将ISO8601中的逗号替换为. timePart = timePart.replace(',', '.');