在 Java 中比较两个日期

2022-09-01 16:26:54

我需要比较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

如何解决此问题?


答案 1

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

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

答案 2

我会使用JodaTime来做到这一点。下面是一个示例 - 假设您要查找 2 个日期之间的天数差异。

DateTime startDate = new DateTime(some_date); 
DateTime endDate = new DateTime(); //current date
Days diff = Days.daysBetween(startDate, endDate);
System.out.println(diff.getDays());

JodaTime可以从这里下载