一尘不染

比较Java中的两个日期

java

我需要在Java中比较两个日期。我正在使用这样的代码:

Date questionDate = question.getStartDate();
Date today = new Date();

if(today.equals(questionDate)){
    System.out.println("Both are equals");
}

这是行不通的。变量的内容如下:

  • questionDate 包含 2010-06-30 00:31:40.0
  • today 包含 Wed Jun 30 01:41:25 IST 2010

我该如何解决?


阅读 302

收藏
2020-09-08

共1个答案

一尘不染

日期相等性取决于两个等于毫秒的日期。使用创建新的Date对象new Date()将永远不会等于过去创建的日期。Joda
Time
的API简化了日期的处理。但是,仅使用Java的SDK:

if (removeTime(questionDate).equals(removeTime(today)) 
  ...

public Date removeTime(Date date) {    
    Calendar cal = Calendar.getInstance();  
    cal.setTime(date);  
    cal.set(Calendar.HOUR_OF_DAY, 0);  
    cal.set(Calendar.MINUTE, 0);  
    cal.set(Calendar.SECOND, 0);  
    cal.set(Calendar.MILLISECOND, 0);  
    return cal.getTime(); 
}
2020-09-08