如何在Java中比较日期?

例子:

日期为22-02-2010 日期2是今天07-04-2010 Date3是25-12-2010

Date3总是大于date1,而date2总是今天。如何验证今天的日期是否在日期1和日期3之间?


当前回答

使用compareTo:

date1.compareTo (date2);

其他回答

Date有前后两种方法,它们之间的比较如下:

if(todayDate.after(historyDate) && todayDate.before(futureDate)) {
    // In between
}

要进行包容性比较:

if(!historyDate.after(todayDate) && !futureDate.before(todayDate)) {
    /* historyDate <= todayDate <= futureDate */ 
}

你也可以试试Joda-Time,但请注意:

Joda-Time是Java SE 8之前的Java事实上的标准日期和时间库。现在要求用户迁移到java。时间(jsr - 310)。

后端端口可用于Java 6和7以及Android。

这个方法对我很管用:

 public static String daysBetween(String day1, String day2) {
    String daysBetween = "";
    SimpleDateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    try {
        Date date1 = myFormat.parse(day1);
        Date date2 = myFormat.parse(day2);
        long diff = date2.getTime() - date1.getTime();
        daysBetween = ""+(TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return daysBetween;
}

针对Java 8及更高版本进行更新

isAfter () isBefore () isEqual () compareTo ()

这些方法存在于LocalDate、LocalTime和LocalDateTime类中。

这些类内置于Java 8及更高版本中。大部分的java。时间功能在ThreeTen-Backport中向后移植到Java 6和7,并在ThreeTenABP中进一步适应Android(参见如何使用…)

使用compareTo:

date1.compareTo (date2);

比较这两个日期:

  Date today = new Date();                   
  Date myDate = new Date(today.getYear(),today.getMonth()-1,today.getDay());
  System.out.println("My Date is"+myDate);    
  System.out.println("Today Date is"+today);
  if (today.compareTo(myDate)<0)
      System.out.println("Today Date is Lesser than my Date");
  else if (today.compareTo(myDate)>0)
      System.out.println("Today Date is Greater than my date"); 
  else
      System.out.println("Both Dates are equal");