chinabugotech/hutool · error · DateException
Invalid format: [{}]
Error message
Invalid format: [{}] What it means
Error "Invalid format: [{}]" thrown in chinabugotech/hutool.
Source
Thrown at hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java:903
if (StrUtil.contains(iso8601String, 'Z')) {
if (length == DatePattern.UTC_PATTERN.length() - 4) {
// 格式类似:2018-09-13T05:34:31Z,-4表示减去4个单引号的长度
return parse(iso8601String, DatePattern.UTC_FORMAT);
}
final int patternLength = DatePattern.UTC_MS_PATTERN.length();
// 格式类似:2018-09-13T05:34:31.999Z,-4表示减去4个单引号的长度
// -4 ~ -6范围表示匹配毫秒1~3位的情况
if (length <= patternLength && length >= patternLength - 6) {
// issue#I7H34N,支持最多6位毫秒
return parse(iso8601String, DatePattern.UTC_MS_FORMAT);
}
} else if (StrUtil.contains(iso8601String, '+')) {
// 去除类似2019-06-01T19:45:43 +08:00加号前的空格
iso8601String = iso8601String.replace(" +", "+");
final String zoneOffset = StrUtil.subAfter(iso8601String, '+', true);
if (StrUtil.isBlank(zoneOffset)) {
throw new DateException("Invalid format: [{}]", iso8601String);
}
if (false == StrUtil.contains(zoneOffset, ':')) {
// +0800转换为+08:00
if (zoneOffset.length() < 2) {
throw new DateException("Invalid format: [{}]", iso8601String);
}
final String pre = StrUtil.subBefore(iso8601String, '+', true);
iso8601String = pre + "+" + zoneOffset.substring(0, 2) + ":" + "00";
}
if (StrUtil.contains(iso8601String, CharUtil.DOT)) {
// 带毫秒,格式类似: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 {View on GitHub (pinned to 8870454b2a)
Solutions
- Provide a date format pattern matching the input string, e.g. "yyyy-MM-dd HH:mm:ss".
- Check that the pattern uses valid pattern letters (y, M, d, H, m, s) and matches the input length.
- Use DateUtil.parse without a pattern to auto-detect common formats.
When it happens
Trigger: Thrown at hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java:903 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of chinabugotech/hutool@8870454b2a (2026-08-14).
Data as JSON: /api/errors/2aca171159352c27.
Report an issue: GitHub.