我想知道在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
}
答案 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。