2012-02-01 8 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として開始されます。 私は、設定されたSTARTDATEメソッドを使用すると、私は

setStartDate(rsvIns.startDate); 

...データベースから取得したオブジェクトの値に、このインスタンスの値を設定しています、私はたstartDateが等しいかどうかを確認しようとすると、今の問題はここにありますTodayDateに、

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

私は、それがエラーをスローしているかのか、他の部分を実行していない等号ラインに来る時はいつでも、それ故に文が実行されることはありません。なぜこのことが起こっているのでしょうか? おかげで、

+1

エラーが何かを教えてください。 –

+0

startDateがnullではありませんか? – nolt2232

+0

startDateがnullの場合は、その行に表示される唯一のことですが、tryキャッチでラップし、例外を記録または出力して問題の原因を突き止める必要があります。 – Bill

答えて

0

私はあなたが提供するコードスニペットから2つの問題を参照してください。

  1. 日todayDate =新しいDate()オブジェクトは、時、分、秒とミリ秒の情報に含まれています。 "dd/MM/yyyy"文字列から作成された日付と比較すると、Dateオブジェクトの時間コンポーネントに起因する問題が発生します。
  2. getStartDate()はStringオブジェクトを返します。その値がif文のstartDate変数に割り当てられ、equals()がDateオブジェクトのパラメータ値で呼び出された場合、クラスが一致しないため、startDateとパラメータの値にかかわらず結果はfalseになります。

は、あなたがこのような状況の中に出た場合、あなたは、答えを参照する小さなプログラムやデバッグトレースにコードをコピーし、それを、オブジェクトの値を見ていません。 Javaコードにトレースします。

私は何度もDateオブジェクトの時間コンポーネントで長年の経験を持つJava開発者を見てきました。時間、分、秒をクリアし、ミリ秒単位を忘れてしまいます。

+0

ありがとうございました問題は、文字列を返し、それをDate型と比較しています。最も助けになってくれてありがとう。 –