如何将java.util.date初始化为空

时间:2015-05-11 13:09:41

标签: java

我需要你的帮助,将java.util.Date变量初始化为空。当我正在运行页面时,如果我没有选择任何日期,它会显示nullpointerexception。

代码是:

private java.util.Date date2;

我尝试将该变量设为空,但它不起作用>

private java.util.Date date2;

if (date2==null || date2.equals(""))
date2="";

然而,初始化:

 private java.util.Date date2= new java.util.Date(0,0,0);

上面的代码会给我一个我不想要的默认值。

5 个答案:

答案 0 :(得分:14)

java.util.Date 的实例存储日期。那么如何在其中存储任何内容或将其清空?它只能存储对java.util.Date实例的引用。如果你这样做null意味着它没有引用java.util.Date的任何实例。

您已尝试date2="";此语句的意思,您希望将String的实例引用到假设存储java.util.Date的变量。这是不可能的,因为Java是强类型语言

修改

在看到 LastFreeNickname

的答案后发表评论
  

我有一个表单,日期文本框在文本框中默认为空白,但是如果用户没有输入任何内容,则在提交数据时,它应该接受它

我建议您检查文本框是否为空。如果它是空的,那么您可以将默认日期存储在变量或当前日期中,也可以将其分配为null,如下所示:

if(textBox.getText() == null || textBox.getText().equals(""){
    date2 = null; // For Null;
    // date2 = new Date(); For Current Date
    // date2 = new Date(0); For Default Date
}

此外,我可以假设您要求用户在TextBox中输入日期,您使用DateFormat来解析在TextBox中输入的文字。如果是这种情况,您可以简单地调用dateFormat.parse(),如果写入日期的格式不正确或为空字符串,则会ParseException。在catch块中,您可以将上述语句放在下面:

try{
    date2 = dateFormat.parse(textBox.getText());
}catch(ParseException e){
    date2 = null; // For Null;
    // date2 = new Date(); For Current Date
    // date2 = new Date(0); For Default Date
}

答案 1 :(得分:5)

IMO,您无法创建空Date(java.util)。您可以使用Date值创建null对象,并可以进行空检查。

 Date date = new Date(); // Today's date and current time
 Date date2 = new Date(0); // Default date and time
 Date date3 = null; //Date object with null as value.
 if(null != date3) {
    // do your work.
 }

答案 2 :(得分:1)

尝试使用空值初始化。

private java.util.Date date2 = null;

同样private java.util.Date date2 = "";不能用作""是一个字符串。

答案 3 :(得分:0)

您不清楚希望日期逻辑如何表现?通常,处理默认行为的一种好方法是Null Object pattern

答案 4 :(得分:0)

Date的实例始终表示日期,不能为空。您可以使用date2的空值来表示"没有日期"。每当使用date2时都必须检查null以避免NullPointerException,就像渲染页面时一样:

if (date2 != null)
  // print date2
else
  // print nothing, or a default value