我需要比较查询中的两个值(日期)。
String myFormatString = "yyyyMMdd";
SimpleDateFormat df = new SimpleDateFormat(myFormatString);
(查询)
Date date1 = df.parse(rs.getString(8));
Date date2= df.parse(rs.getString(9));
实际上我可以从查询中获取我想要的值(日期)并且可以传入 date1和date2。但是当我从date2的数据库中获得null值时, 我收到'NullPointerException'错误。我需要比较日期1和日期2 将设置较大的日期进行报告。有什么想法吗?
亲爱的,感谢您的建议。这对我很有帮助。最后我找到了解决的方法。
try {
Date date1 = df.parse(rs.getString(8));
Date date2 = df.parse(rs.getString(9));
if(date1.compareTo(date2) > 0)
{ Date = rs.getString(8);
}
else if(date1.compareTo(date2) < 0)
{
Date = rs.getString(9);
}
else
{
Date = rs.getString(8);
}
} catch (NullPointerException ex) {
Date=rs.getString(8);
}
答案 0 :(得分:1)
在解析之前,检查日期字符串是否为空,
Date date1 = null;
Date date2 = null;
if((rs.getString(8)!=null) && !(rs.getString(8).equals(""))){
date1 = df.parse(rs.getString(8));
}
if((rs.getString(9)!=null) && !(rs.getString(9).equals(""))){
date2 = df.parse(rs.getString(9));
}
答案 1 :(得分:1)
如果您的数据存在数据库为null
返回date2
的情况,那么使用异常处理是个好主意:
try {
Date date1 = df.parse(rs.getString(8));
Date date2 = df.parse(rs.getString(9));
...
} catch (NullPointerException ex) {
// Do something/nothing if date2 is null
}
答案 2 :(得分:0)
Date对象不接受null构造函数。您可能需要首先创建临时变量并确保它们不为空。如果其中一个为空,可能是你可以说另一个更大(如果这是你期望的和你的业务逻辑是什么?)。
Date date1 = null;
if((rs.getString(8)!=null) && (!"".equals(rs.getString(8))))
{
date1 = df.parse(rs.getString(8));
}
Date date2 = null;
if((rs.getString(9)!=null) && (!"".equals(rs.getString(9))))
{
date2 = df.parse(rs.getString(9));
}
然后在date1和amp;之间进行日期比较。 DATE2。
答案 3 :(得分:0)
您不能为Date对象设置空值。如果为日期传递空值,则无法比较日期。在这种情况下,您需要处理异常。
Date yourReportDate = new Date();
try {
Date date1 = df.parse(rs.getString(8);
Date date2 = df.parse(rs.getString(9);
if(date1.getTime()>date2.getTime())
{
yourReportDate.setTime(date1.getTime());
}else
{
yourReportDate.setTime(date2.getTime());
}
} catch (Exception e) {
e.printStackTrace();
}