Gnaniyar Zubair Gnaniyar Zubair - 2 months ago 13
Java Question

Compare two dates in Java

I need to compare two dates in java. I am using the code like this:

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

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


This is not working. The content of the variables is the following:


  • questionDate
    contains
    2010-06-30 00:31:40.0

  • today
    contains
    Wed Jun 30 01:41:25 IST 2010



How can I resolve this?

Answer

Date equality depends on the two dates being equal to the millisecond. Creating a new Date object using new Date() will never equal a date created in the past. Joda Time's APIs simplify working with dates; however, using the Java's SDK alone:

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