此invprbm.setFollowUpDate()
是java.util.Date
类型
如果给定值为空,我必须将followUpDate
设置为特殊字符- -
,例如:
SimpleDateFormat formatter = new SimpleDateFormat("- -");
invprbm.setFollowUpDate(formatter.parse("- -"));
在这种情况下,我得到的值为Thu Jan 01 00:00:00 IST 1970
而不是预期的- -
。
答案 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规范。