检查日期是否超过 10 年且超过 20 年

2022-09-01 12:39:12

我正在尝试签入Java 8,如果日期早于10年,早于20年。我用And和年复一年作为论据。Date.before()Date.after()currentDate-10currentDate-20

有人可以建议什么最干净的方式来获得一个日期,这是10岁和20年的日期格式,以传递它在我的和方法?before()after()


答案 1

您可以使用java.time.LocalDate来执行此操作。示例:如果您需要检查 01/01/2005 是否介于该持续时间之间,则可以使用

LocalDate date = LocalDate.of(2005, 1, 1); // Assign date to check
LocalDate today = LocalDate.now();

if (date.isBefore(today.minusYears(10)) && date.isAfter(today.minusYears(20))) {
  //Do Something
}

答案 2

使用日历,您可以轻松获得当前日期的10年日期和20年的日期。

Calendar calendar  = Calendar.getInstance();
calendar.add(Calendar.YEAR, -10);
Date d1 = calendar.getTime();
calendar.add(Calendar.YEAR, -10);
Date d2 = calendar.getTime();

当您使用Java 8时,您也可以使用LocalDate。

    LocalDate currentDate = LocalDate.now();
    Date d1 = Date.from(currentDate.minusYears(10).atStartOfDay(ZoneId.systemDefault()).toInstant());
    Date d2 = Date.from(currentDate.minusYears(20).atStartOfDay(ZoneId.systemDefault()).toInstant());

为了进行比较,您可以使用您所说的和方法。date.after()date.before()

    if(date.after(d1) && date.before(d2)){  //date is the Date instance that wants to be compared
        ////
    }

和 方法也在 和 中实现。您可以在这些实例中使用这些方法,而无需转换为实例。before()after()CalendarLocalDatejava.util.Date