2012-02-01 21 views
-3

我在代碼的主體如下:Java的Date實例的問題

public String getStartDate() { 
    return (new SimpleDateFormat("dd/MM/yyyy").format(startDate)); 
} 

public void setStartDate(Date startDate) { 
    this.startDate = startDate; 
} 

且StartDate開始爲日期的startDate; 當我使用set STARTDATE方法,我設置這種情況下,從數據庫中檢索對象的價值的價值..

setStartDate(rsvIns.startDate); 

現在的問題是這裏的時候,我嘗試看看是否起始日期等於到TodayDate,

  Date todayDate = new Date(); 
      if(startDate.equals(todayDate)) 
      { 
       changeStatus(requestID, "Active"); 
      }else{ 
       //update status if others approved 
       changeStatus(requestID, "Approved"); 
      } 

我每當說到排隊等號,它拋出的錯誤,只是不會執行,如果要不部分,因此永遠不會執行該語句。任何想法,爲什麼會發生這種情況? 謝謝,

+1

請注意告訴我們錯誤是什麼? – 2012-02-01 06:01:26

+0

你確定startDate不爲null嗎? – nolt2232 2012-02-01 06:03:31

+0

關於我在該行看到的唯一會發生的事情是,如果startDate爲null,但您應該將其包裝在try catch中並打印或記錄異常,以便可以找出問題所在。 – Bill 2012-02-01 06:04:04

回答

0

我看到你所提供的代碼片段2個問題:

  1. 日期todayDate =新的日期()對象包含的時,分,秒和毫秒信息。如果將它與從「dd/MM/yyyy」字符串創建的日期進行比較,您將遇到由Date對象的時間組件引起的問題。
  2. getStartDate()返回一個String對象。如果從if語句將該值分配給startDate變量,則使用Date對象參數值調用equals()調用時,無論startDate和參數值如何,結果都將爲false,因爲類不匹配。

如果您遇到類似這樣的情況並且您沒有看到答案,請將代碼複製到一個小程序並調試跟蹤它,查看對象的值。跟蹤到java代碼。

我已經看到很多時間的java開發人員多年的時間組件的經驗旅行對象。他們甚至清除了小時,分鐘和秒,並忘記了毫秒組件。

+0

感謝問題是返回字符串並將其與Date類型進行比較。再次感謝您的幫助。 – 2012-02-04 04:36:22