1

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

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

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

4

1 回答 1

0

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

而是做这样的事情:

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

如果你真的想从一个日期到一个字符串,你可以这样做:

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

您当前方法的问题在于SimpleDateFormat它不是为处理null日期而设计的。它无法解析字符串以生成nullDate 对象,也无法格式化nullDate 对象。

您当前的代码实际上在做的是指定一种格式,该格式不会告诉解析器如何从输入字符串中提取日期/时间的任何组成部分。该parse方法返回一个getTime()值为零的 Date 对象。这并非不合理,因为您尝试执行的操作超出了SimpleDateFormat该类的 javadoc 规范。

于 2012-11-20T06:44:26.573 回答