比较Java中的两个日期(日标准)的最佳方法?

时间:2014-09-15 14:59:23

标签: java

我想知道在Java中比较两个日期的最佳方法,例如在以下场景中:

Date date = new Date(time);
Date now = new Date();
//
long day = 86400000L;
long days = day * 7;
if ((date.getTime() + days) <= now.getTime()) {
     // DO 1
} else {
     // DO 2
}

换句话说:我想获得一个Date对象,在某些天添加并比较它们。

问题: Java 6有一个很好的解决方案吗?对于Java 8(使用新的Time API)?我想使用Date.after(Date date)和Date.before(Date date)为此(在将日期添加到日期之后)

谢谢!

修改

据Coffee说,看起来可以做到这一点。我不知道是否有更好的方法。

Calendar date = Calendar.getInstance();
date.setTime(new Date(time));
date.add(Calendar.DATE, 7);
Calendar now = Calendar.getInstance();
//
if(now.after(date)) {
     // DO 1
} else {
     // DO 2
}

2 个答案:

答案 0 :(得分:2)

您可以使用Joda-Time让您的生活变得更轻松:

DateTime dt = new  DateTime(time);
if (dt.plusDays(7).isBeforeNow()) {
 // DO 1
} else {
 // DO 2
}

答案 1 :(得分:2)

在Java 8中:

LocalDate date = LocalDate.ofEpochDay(time); // days!
if (date.plusDays(7).isBefore(LocalDate.now())) {
    // DO 1
} else {
    // DO 2
}

修改

如果时间是毫秒:

Date d = new Date();
d.setTime(time);
LocalDate date = d.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

说明是here