无法在日期中传递空值

时间:2012-01-31 03:08:41

标签: java

我需要比较查询中的两个值(日期)。

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);
       }

4 个答案:

答案 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(); 
    }