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);
  }

我设法得到我的第二个代码,即搜索名称并返回结果以正常工作。但是对于日期搜索,即使我在 SQL DB 中有 getDate() 也会导致错误。

我做了一个 System.out.println(x) 和 System.out.println(dDate) 来验证格式,但结果是正确的。

2013-01-17 2013-01-17

应该返回“真”

编辑:

        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

Java Date 还包含时间信息。日期可能以分钟甚至秒为单位。为确保两个日期具有完全相同的值,您应该打印出date.getTime()哪个毫秒的返回long值 since January 1, 1970, 00:00:00 GMT。如果你想比较你应该x从 String 转换为 Date 然后这样做:

  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 回答
1

我认为问题在于您试图将字符串与日期对象进行比较,尽管值相同但两者都是不同的对象,但该对象将是错误的。

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

方法的默认行为equals比较对象引用是否指向同一个对象而不是基于值。

于 2013-01-16T16:49:29.913 回答
1

在线:

x.equals(dDate)

x 是 a String, dDate 是 a java.sql.Date。他们不是平等的。

于 2013-01-16T16:49:34.773 回答