我正在尝试创建一个服务,对数据库执行一系列操作,然后返回一组信息。
在这些信息中,有一系列客户的诞生日期。
当我尝试解析(然后格式化)这个日期时,我在标题中得到错误。
奇怪的是,即使异常被提出,代码仍然编译并运行没有问题给我我期望的结果...
这是方法:
public String getDataNascitaFormattata() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date data = null;
try {
data = sdf.parse(dataNascita);
dataNascita = new SimpleDateFormat("dd/MM/yyyy").format(data);
} catch (ParseException e) {
System.err.println(e);
}
return dataNascita;
}
这是一个例子:
初始生日:“1969-09-07 00:00:00.0”
期望的生日: 07/09/1969
错误: java.text.ParseException:无法解析的日期:“07/09/1969”
结果(抛出异常):
编辑:我已经尝试添加语言环境,但异常仍然被抛出......
答案 0 :(得分:2)
我猜dataNascita
已经是字符串'07/09/1969'
,这就是解析失败但返回所需值并且程序正常工作的原因。
所以你试图将一个String解析成一个对象,然后用与原始String相同的格式重新格式化它!
请运行以下代码段并检查您的数据
String dataNascita = "1969-09-07 00:00:00.0";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
Date data = null;
try {
data = sdf.parse(dataNascita);
dataNascita = new SimpleDateFormat("dd/MM/yyyy").format(data);
} catch (ParseException e) {
System.err.println(e);
}
System.out.println(dataNascita);
dataNascita = "07/09/1969";
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
data = null;
try {
data = sdf.parse(dataNascita);
dataNascita = new SimpleDateFormat("dd/MM/yyyy").format(data);
} catch (ParseException e) {
System.err.println(e);
}
System.out.println(dataNascita);
答案 1 :(得分:0)
我假设dataNascita
是一个字段(似乎没用)。
您捕获异常并将其打印到stderr。因此编程继续并返回分配给dataNascita
编辑: 您最有可能想要做以下一个
dataNascita
您还应该想知道为什么使用dataNascita
字段(假设这是基于代码的情况)。