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 91badecb4..d20b8881d 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 @@ -817,6 +817,9 @@ public class DateUtil extends CalendarUtil { * @since 3.1.1 */ public static DateTime parseTimeToday(CharSequence timeString) { + // issue#I9C2D4 处理时分秒 + timeString = StrUtil.replaceChars(timeString, "时分秒", ":"); + timeString = StrUtil.format("{} {}", today(), timeString); if (1 == StrUtil.count(timeString, ':')) { // 时间格式为 HH:mm @@ -930,6 +933,17 @@ public class DateUtil extends CalendarUtil { return null; } + // issue#I9C2D4 + if(StrUtil.contains(cstString, ',')){ + if(StrUtil.contains(cstString, "星期")){ + return parse(cstString, FastDateFormat.getInstance(DatePattern.HTTP_DATETIME_PATTERN, TimeZone.getTimeZone("GMT"), Locale.CHINA)); + } + return parse(cstString, DatePattern.HTTP_DATETIME_FORMAT); + } + + if(StrUtil.contains(cstString, "星期")){ + return parse(cstString, FastDateFormat.getInstance(DatePattern.JDK_DATETIME_PATTERN, TimeZone.getTimeZone("GMT"), Locale.CHINA)); + } return parse(cstString, DatePattern.JDK_DATETIME_FORMAT); } diff --git a/hutool-core/src/main/java/cn/hutool/core/lang/RegexPool.java b/hutool-core/src/main/java/cn/hutool/core/lang/RegexPool.java index 9c5207324..0b7c8291a 100755 --- a/hutool-core/src/main/java/cn/hutool/core/lang/RegexPool.java +++ b/hutool-core/src/main/java/cn/hutool/core/lang/RegexPool.java @@ -140,7 +140,7 @@ public interface RegexPool { /** * 时间正则 */ - String TIME = "\\d{1,2}:\\d{1,2}(:\\d{1,2})?"; + String TIME = "\\d{1,2}[:时]\\d{1,2}([:分]\\d{1,2})?秒?"; /** * 中国车牌号码(兼容新能源车牌) */ diff --git a/hutool-core/src/test/java/cn/hutool/core/date/IssueI9C2D4Test.java b/hutool-core/src/test/java/cn/hutool/core/date/IssueI9C2D4Test.java new file mode 100644 index 000000000..a9ef0b193 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/date/IssueI9C2D4Test.java @@ -0,0 +1,34 @@ +package cn.hutool.core.date; + +import org.junit.Assert; +import org.junit.Test; + +public class IssueI9C2D4Test { + @Test + public void parseHttpTest() { + String dateStr = "Thu, 28 Mar 2024 14:33:49 GMT"; + final DateTime parse = DateUtil.parse(dateStr); + Assert.assertEquals("2024-03-28 14:33:49", parse.toString()); + } + + @Test + public void parseHttpTest2() { + String dateStr = "星期四, 28 三月 2024 14:33:49 GMT"; + final DateTime parse = DateUtil.parse(dateStr); + Assert.assertEquals("2024-03-28 14:33:49", parse.toString()); + } + + @Test + public void parseTimeTest() { + String dateStr = "15时45分59秒"; + final DateTime parse = DateUtil.parse(dateStr); + Assert.assertEquals("15:45:59", parse.toString().split(" ")[1]); + } + + @Test + public void parseTimeTest2() { + String dateStr = "15:45:59"; + final DateTime parse = DateUtil.parse(dateStr); + Assert.assertEquals("15:45:59", parse.toString().split(" ")[1]); + } +}