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

如何使用SimpleDateFormat解析日期?解决Unparseable date报错问题

问题根因

配置的日期解析模板与待解析字符串结构完全不匹配,是抛出Unparseable date运行时错误的直接原因。
具体的结构不匹配点:

  • 代码中使用的模板dd/MM/yyyy要求输入为斜杠分隔的「日/月/年」格式,合法可解析的输入示例为21/02/2021
  • 实际待解析的字符串Sun, 21 Feb 2021 22:13:42,结构为「英文星期缩写, 日期 英文月份缩写 年份 时分秒」,既不满足模板要求的斜杠分隔规则,也包含模板未覆盖的星期、英文月份、时间字段,完全不在SimpleDateFormat的匹配范围内。
修正方案
  • 调整解析模板为与输入字符串结构完全对齐的格式:对应Sun, 21 Feb 2021 22:13:42这类带英文星期、英文月份缩写的格式,正确的匹配模板为EEE, dd MMM yyyy HH:mm:ss
  • 显式指定英文语言环境:星期、月份缩写的匹配是依赖JVM运行区域的,如果JVM处于非英文语言环境,即使模板写对,也无法识别Sun、Feb这类英文缩写,依旧会触发解析失败。创建SimpleDateFormat实例时需要主动传入英文区域参数:
    public Date parseDate(String date) {
        // 显式指定英文区域,匹配英文缩写的星期与月份
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss", Locale.ENGLISH);
        try {
            return simpleDateFormat.parse(date);
        }
        catch (Exception e) {
            e.printStackTrace();
            return new Date();
        }
    }
    
  • 注意现有兜底逻辑的隐患:当前代码在捕获异常后直接返回当前时间的逻辑,会掩盖真实的解析错误,建议在调试阶段暂时移除该兜底逻辑,等格式匹配问题全部验证通过后,再根据业务实际需求设计异常处理策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 09:06:02