你似乎在问你应该如何解析你用字符串“- -”表示的“空”日期。简单的答案是你不解析它!
而是做这样的事情:
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
日期而设计的。它无法解析字符串以生成null
Date 对象,也无法格式化null
Date 对象。
您当前的代码实际上在做的是指定一种格式,该格式不会告诉解析器如何从输入字符串中提取日期/时间的任何组成部分。该parse
方法返回一个getTime()
值为零的 Date 对象。这并非不合理,因为您尝试执行的操作超出了SimpleDateFormat
该类的 javadoc 规范。