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

在Java中比较两个日期的最佳方法(日期标准)?,java,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 } 您可以使用并使您的生活更加轻松: DateTime dt = n

我想知道在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
}
您可以使用并使您的生活更加轻松:

DateTime dt = new  DateTime(time);
if (dt.plusDays(7).isBeforeNow()) {
 // DO 1
} else {
 // DO 2
}
您可以使用并使您的生活更加轻松:

DateTime dt = new  DateTime(time);
if (dt.plusDays(7).isBeforeNow()) {
 // DO 1
} else {
 // DO 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();
解释如下。

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

解释是。

您需要熟悉java.util.Calendar库。上面的代码看起来像pseudocodeUse日历对象;因为API被设计认为是不可修复的;所以问“我想使用日期”就是问如何让自己陷入困境。听取别人给你的建议,并使用推荐的API。还有许多其他的。您需要熟悉java.util.Calendar库。上面的代码看起来像pseudocodeUse日历对象;因为API被设计认为是不可修复的;所以问“我想使用日期”就是问如何让自己陷入困境。听取别人给你的建议,并使用推荐的API。谢谢,我已经听说过这个库了,但我总是不想把我的应用程序绑定到外部库。将来,根据材料的复杂程度,我可能会考虑它。基于这个库的ReaTunn JSR—310是java 8。您可以尝试一个JSR-310的后端口,您可以将其放入Java 8中。谢谢,我已经听说过这个库,但我总是不想将我的应用程序绑定到外部库。将来,根据材料的复杂程度,我可能会考虑它。基于这个库的ReaTunn JSR—310是java 8。你可以试试JSR-310的一个后端口,你可以把它放到Java8中。令人惊讶的是,它看起来像是Java8上的一个干净的解决方案!好吧,不那么干净:时间不是毫秒而是天!回答得好。我建议还将可选的
ZoneId
对象传递给
LocalDate.now
方法。否则,将隐式应用JVM的当前默认时区来确定日期。即使在应用程序执行期间,默认值也会有所不同。最好指定所需/预期的时区
ZoneId.of(“America/Montreal”)
太棒了,在Java8上看起来像一个干净的解决方案!好吧,不那么干净:时间不是毫秒而是天!回答得好。我建议还将可选的
ZoneId
对象传递给
LocalDate.now
方法。否则,将隐式应用JVM的当前默认时区来确定日期。即使在应用程序执行期间,默认值也会有所不同。最好指定所需/预期的时区<代码>地区(“美国/蒙特利尔”)