!1367 新增 yyyy-MM-dd'T'HH:mmXXX 格式支持

Merge pull request !1367 from 盘古给你一斧/v5-dev
This commit is contained in:
Looly
2025-07-30 11:00:21 +00:00
committed by Gitee
3 changed files with 18 additions and 0 deletions

View File

@@ -285,6 +285,15 @@ public class DatePattern {
*/ */
public static final FastDateFormat UTC_WITH_XXX_OFFSET_FORMAT = FastDateFormat.getInstance(UTC_WITH_XXX_OFFSET_PATTERN); 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' * UTC时间yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
*/ */

View File

@@ -901,6 +901,9 @@ public class DateUtil extends CalendarUtil {
// 带毫秒格式类似2018-09-13T05:34:31.999+08:00 // 带毫秒格式类似2018-09-13T05:34:31.999+08:00
iso8601String = normalizeMillSeconds(iso8601String, ".", "+"); iso8601String = normalizeMillSeconds(iso8601String, ".", "+");
return parse(iso8601String, DatePattern.UTC_MS_WITH_XXX_OFFSET_FORMAT); 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 { } else {
// 格式类似2018-09-13T05:34:31+08:00 // 格式类似2018-09-13T05:34:31+08:00
return parse(iso8601String, DatePattern.UTC_WITH_XXX_OFFSET_FORMAT); return parse(iso8601String, DatePattern.UTC_WITH_XXX_OFFSET_FORMAT);

View File

@@ -667,6 +667,12 @@ public class DateUtilTest {
dateStr = dt.toString(simpleDateFormat); dateStr = dt.toString(simpleDateFormat);
assertEquals("2018-09-13 13:34:39.999", dateStr); 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时区 // 使用UTC时区
dateStr1 = "2018-09-13T13:34:39.99"; dateStr1 = "2018-09-13T13:34:39.99";
dt = DateUtil.parse(dateStr1); dt = DateUtil.parse(dateStr1);