You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

java.time.format.DateTimeParseException解析'103545'索引2处报错问题问询

报错原因

你指定的日期解析格式为ddMMyyyy,要求待解析的字符串必须是8位长度,依次对应2位日、2位月、4位年。但实际传入的待解析字符串为103545,仅6位长度,解析到索引为2的位置时无法匹配预期的月份字段规则,因此抛出java.time.format.DateTimeParseException异常。

额外提示:你拿到的103545符合HHmmss(时分秒)的6位格式特征,大概率是数据源取错字段,把时间值当成了日期值返回。

解决方案
  • 先确认数据源返回的字段正确性:打印thisDate的实际值,排查是否存在取数逻辑错误,错拿了时间字段而非日期字段。
  • 若确认数据源返回的是日期值,根据实际格式调整解析规则:
    • 如果日期格式为ddMMyy(6位,年份取后两位),将格式化器修改为DateTimeFormatter.ofPattern("ddMMyy")即可,默认会将两位年份解析为2000-2099区间的年份,如需适配19xx年的场景可额外补充年份偏移配置。
    • 如果日期格式为其他6位规则,比如yyMMdd,对应将格式字符串调整为yyMMdd即可。
  • 补充前置校验逻辑,避免非法输入直接抛出异常,示例代码如下:
String thisDate= mySession.getVariableField(myVariable).toString().trim();

// 前置校验:如果确认用ddMMyyyy的8位格式,先判断长度
if (thisDate.length() != 8) {
    // 此处可根据业务需求处理异常分支:打日志、返回默认值、抛出业务异常等
    System.err.println("非法日期输入:" + thisDate + ",预期为8位ddMMyyyy格式字符串");
    return;
}

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("ddMMyyyy");
LocalDate theDate= LocalDate.parse(thisDate, formatter);

内容的提问来源于stack exchange,提问作者Marina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:15:04