This commit is contained in:
Looly 2024-03-28 23:13:36 +08:00
parent eebec03334
commit 94b28801a3
3 changed files with 49 additions and 1 deletions

View File

@ -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);
}

View File

@ -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})?秒?";
/**
* 中国车牌号码兼容新能源车牌
*/

View File

@ -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]);
}
}