在java.util.Date类型中插入特殊字符

时间:2012-11-20 06:16:55

标签: java

invprbm.setFollowUpDate()java.util.Date类型 如果给定值为空,我必须将followUpDate设置为特殊字符- -,例如:

SimpleDateFormat formatter = new SimpleDateFormat("- -");
invprbm.setFollowUpDate(formatter.parse("- -"));

在这种情况下,我得到的值为Thu Jan 01 00:00:00 IST 1970而不是预期的- -

1 个答案:

答案 0 :(得分:0)

你似乎在问你应该如何解析你用字符串“ - - ”表示的“空”日期。简单的答案是你不解析它!

而是做这样的事情:

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yy"); // or whatever
if (str.equals("- -")) {
    invprbm.setFollowupDate(null);
} else {
    invprbm.setFollowUpDate(formatter.parse(str));
}

如果你真的想从Date转到String,你可以这样做:

if (date == null) {
    invprbm.setFollowupDate("- -");
} else {
    invprbm.setFollowUpDate(formatter.format(date));
}

您当前的方法存在的问题是,SimpleDateFormat并非旨在应对null日期。它无法解析字符串以生成null Date对象,也无法格式化null Date对象。

您当前的代码实际上在做的是指定一种格式,该格式不会告诉解析器如何从输入字符串中提取日期/时间的任何组件。 parse方法返回getTime()值为零的Date对象。这并非不合理,因为您要做的事情不属于SimpleDateFormat类的javadoc规范。