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

Java传入字符串日期后调用getData()返回null问题排查

问题原因

你拿到的日期始终为null,核心是两个问题叠加导致的:

  • 日期格式化模式和实际输入的字符串格式不匹配,解析直接失败
  • 异常捕获块是空的,解析报错被完全吞掉,data字段从未被成功赋值,保持了成员变量的默认值null

具体错误细节:

  1. 你定义的SimpleDateFormat模式为"HH/dd/MM/yyyy",这个模式要求输入字符串必须用3个斜杠分隔为4段,依次对应「小时/日/月/年」,比如15/18/09/2019才符合格式要求。但你注释里的示例值"18/09/2019"只有2个斜杠、分3段,和模式要求的格式完全不匹配,调用parse方法时会直接抛出ParseException。
  2. setter方法里的catch块没有任何处理逻辑,解析失败后既不打印错误也不抛出异常,程序会静默跳过赋值逻辑,data一直是默认的null值。
  3. 额外隐患:SimpleDateFormat是线程不安全的类,定义为类成员变量在多线程场景下会出现解析结果错乱的问题。
修复方法
  1. 先对齐格式化模式和你实际需要的输入格式:
    • 如果你不需要输入小时,只需要输入「日/月/年」格式的日期(比如示例里的18/09/2019),把格式化器的模式修改为对应格式即可:
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
    
    • 如果你确实需要带小时的「小时/日/月/年」格式,那输入时必须传3个斜杠分隔的4段内容,和模式要求匹配。
  2. 禁止写空的异常捕获块,至少打印错误信息方便排查问题:
    public void setData(String dataRecebida) {
        try { 
          this.data = formatter.parse(dataRecebida);
        } catch(Exception e) {
          // 打印解析错误栈,方便定位格式问题
          e.printStackTrace();
        }
    }
    

修正后输入符合格式要求的日期字符串,就能正常解析拿到Date对象,不会再返回null。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:54:12