2012-11-20 176 views
1

在此invprbm.setFollowUpDate()中是java.util.Date類型。
如果給定的值是空的,我必須設置followUpDate爲特殊字符- -,例如:在java.util.Date中插入特殊字符

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

在這種情況下,我越來越喜歡Thu Jan 01 00:00:00 IST 1970而不是預期- -的值。

+0

是什麼問題? –

+0

如果你可以解釋一點。給出的是什麼,你需要什麼。 –

+0

你的輸入是什麼,你想輸出什麼 –

回答

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日期。它無法解析字符串以生成日期對象,並且無法格式化日期對象。

您當前的代碼實際上在做什麼是指定一種格式,它不告訴解析器如何從輸入字符串中提取任何日期/時間組件。 parse方法正在返回一個Date對象,其getTime()值爲零。這並非不合理,因爲您正在嘗試執行的操作不屬於SimpleDateFormat類的javadoc規範。

+0

感謝您的回覆,但這裏的invprbm.setFollowUpDate是java.util.Date對象。請解決這個問題... 感謝你 –

+0

@NaveenKumar - 如果'invprbm.setFollowUpDate'是一個Date的setter,那麼第一個選擇可以解決這個問題。 (如果沒有,你需要更清楚地解釋這個問題。) –