0

現在の日付を取得するためのコード:

SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
String strDate = sdfDate.format(now);
return strDate;

日付を検索して結果を返すコード

try
   {     
        String x = cDate();

        ps = conn.prepareStatement(fill);
        rs = ps.executeQuery();

        int count = 0;

       while (rs.next()){
       Date dDate = rs.getDate("recDate");

        if (x.equals(dDate)){
            System.out.println("True);
            break;
        } 
        else {
            System.out.println("False");
            }
        }

   }
   catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
  }

名前を検索して結果を返すための以下のコード

   try
   {     
        string attendant = txtName.getText();

        ps = conn.prepareStatement(fill);
        rs = ps.executeQuery();

        int count = 0;

       while (rs.next()){
       String bName = rs.getString("name");

        if (attendant.equals(bName){
            System.out.println("True);
            break;
        } 
        else {
            System.out.println("False");
            }
        }

   }
   catch(Exception e){
            JOptionPane.showMessageDialog(null, e);
  }

名前を検索して結果を返すという2番目のコードを取得するように管理しました。しかし、日付検索に関しては、SQL DBにgetDate()がある場合でもfalseになります。

System.out.println(x)とSystem.out.println(dDate)を実行して形式を確認しましたが、正しいことがわかりました。

2013-01-17 2013-01-17

「True」を返す必要があります

編集:

        java.util.Date now = new java.util.Date();
        java.sql.Date sqlDate = new java.sql.Date(now.getTime());

       I replace (x.equals(dDate)) to (sqlDate == dDate) but the result still return as false, any idea?

助けてください..

ついにできた..

解決

       (Math.round(now.getTime() / 1000/3600/24) == Math.round(dDate.getTime() /1000/3600/24)
4

3 に答える 3

1

問題は、値は同じですが両方とも異なるオブジェクトであるにもかかわらず、文字列をfalseになる日付オブジェクトと比較しようとしているためだと思います。

String x = cDate();
...
Date dDate = rs.getDate("recDate");
...
if(x.equals(dDate)){

メソッドのデフォルトの動作は、equalsオブジェクト参照が値に基づいていない同じオブジェクトを指しているかどうかを比較します。

于 2013-01-16T16:49:29.913 に答える
1

行で:

x.equals(dDate)

xはString、、dDateはjava.sql.Date。です。それらは等しくありません。

于 2013-01-16T16:49:34.773 に答える
1

Java Dateには、時刻情報も含まれています。日付は数分または数秒で異なる場合があります。両方の日付が完全に同じ値であることを確認するには、からのミリ秒のdate.getTime()戻り値を出力する必要があります。比較したい場合は、文字列から日付に変換してから、次のようにする必要があります。longJanuary 1, 1970, 00:00:00 GMTx

  x.getTime() == dDate.getTime()

ただし、年、月、日だけを比較したい場合は、次のようにトランクする必要があります。

  Math.round(x.getTime()/1000/3600/24) == Math.round(dDate.getTime()/1000/3600/24)

Javaでの日付比較の詳細については、こちらを参照してください:Javaを使用した日付比較

于 2013-01-16T16:56:09.210 に答える