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

时间:2015-12-01 07:14:30

标签: java date java-8 java-time

如果日期超过10年且超过20年,我正在尝试检查Java 8。我使用Date.before()Date.after()并将currentDate-10年和currentDate-20年作为参数。

有人可以建议以最简单的方式获取日期格式为10年和20年的日期格式,以便通过before()after()方法传递日期吗?

3 个答案:

答案 0 :(得分:31)

您可以使用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
}

答案 1 :(得分:17)

使用Calendar,您可以轻松获得当前日期的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()方法也在CalendarLocalDate中实施。您可以在这些实例中使用这些方法,而无需转换为java.util.Date个实例。

答案 2 :(得分:4)

另一种可能性是在检查日期和上限日期之间计算年份。如果年份大于0且小于10,则表示检查日期超过10年且超过20年。

此代码将确定时间间隔]now - 20 years ; now - 10 years[中的任何日期:

public static void main(String[] args) {
    LocalDate dateToCheck = LocalDate.now().minusYears(20).plusDays(1);

    LocalDate upperYear = LocalDate.now().minusYears(10);
    long yearCount = ChronoUnit.YEARS.between(dateToCheck, upperYear);
    if (yearCount > 0 && yearCount < 10) {
        System.out.println("date is older than 10 years and newer than 20 years");
    }
}