当我输入date作为String
时,我得到的输出为null这是get和set
public Date getData(){
return data;
}
public void setData(String dataRecebida) {
try {
this.data = formatter.parse(dataRecebida);
} catch(Exception e) {
}
}
public Date data; //= "18/09/2019";
SimpleDateFormat formatter = new SimpleDateFormat("HH/dd/MM/yyyy");
我在这里输入日期
System.out.println("E-Digite a data do evento: horario/ dia/mes/Ano");
evento.setData(sc.nextLine());
然后,当我做
System.out.println("Date:"+evento.getData());
我得到的数据输出为null
正如评论所说:
👉您的格式模式与用户输入的文本不匹配。
如果不是吞下了抛出的异常,你早就知道了。
catch(Exception e) {
}
永远不要编写不做任何事情的catch
。(除非在不寻常的情况下,你真的希望出现异常。即使这样,也要写一个代码注释。)
另一个问题:您正在使用糟糕的日期时间类,这些类现在是遗留的。它们在几年前就被现代java取代了。JSR 310中定义的time类。
用DateTimeFormatter
定义格式模式。仅用于日期,使用LocalDate
。对于具有时间的日期,但缺少时区上下文或与UTC的偏移量,使用LocalDateTime
。
搜索堆栈溢出以了解更多信息。这些类已经讨论过很多次了。
您可以在formatter中做如下的小修改:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH");
并提供相应的输入"18/09/2019 00">这将工作,但使用LocalDate
或LocalDateTime
是更好的方法。