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

DateTimeParseException异常排查:同格式时间戳解析一成功一失败原因求解

问题根因

你配置的DateTimeFormatter要求时间的时分秒部分必须按照HH:mm:ss格式用冒号分隔,秒之后的小数部分才允许用点号分隔,两个时间戳的差异刚好出现在秒的前缀分隔符上:

  • 解析成功的2021-08-29 03:52:45.67890:索引16位置为冒号:,符合mm:ss的格式要求
  • 解析失败的2021-08-29 03:53.44.56738:索引16位置为点号.,与预期的冒号不匹配,因此触发解析异常。

修复方案

方案一:修正异常数据源

如果是时间生成逻辑异常,直接将错误字符串中分隔分和秒的点号替换为冒号即可,修改后的值为2021-08-29 03:53:44.56738,可直接被现有解析器正常解析。

方案二:调整解析规则兼容多格式

如果数据源确实存在分和秒用点号分隔的场景,可以调整DateTimeFormatter的构造逻辑,兼容两种分隔符:

private final static DateTimeFormatter DEFAULT_TIMESTAMP_FORMATTER = new DateTimeFormatterBuilder()
        .appendPattern("yyyy-MM-dd HH:mm")
        // 兼容分与秒之间的冒号、点号两种分隔符
        .appendOptional(DateTimeFormatter.ofPattern(":"))
        .appendOptional(DateTimeFormatter.ofPattern("."))
        .appendValue(ChronoField.SECOND_OF_MINUTE, 2)
        .appendFraction(ChronoField.MICRO_OF_SECOND, 0, 6, true)
        .toFormatter();

调整后两种格式的时间戳都可以正常解析。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:36:04