日期输入输出为空



当我输入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">这将工作,但使用LocalDateLocalDateTime是更好的方法。

最新更新