如果日期超过10年且超过20年,我正在尝试检查Java 8。我使用Date.before()
和Date.after()
并将currentDate-10
年和currentDate-20
年作为参数。
有人可以建议以最简单的方式获取日期格式为10年和20年的日期格式,以便通过before()
和after()
方法传递日期吗?
答案 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()
方法也在Calendar
和LocalDate
中实施。您可以在这些实例中使用这些方法,而无需转换为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");
}
}