Используя 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
.
Я не 100% уверен, что об этом (никогда не использовал дату до/после), но вы пробовали сравнение с датой инициированной на сегодня , затем установите еще две даты относительно этого (10 лет и 20 лет назад), затем используйте эти методы? – Foleosy
heres хорошее читать: http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html – Stultuske
http://stackoverflow.com/questions/883060/how-can-i- define-if-a-date-is-between-two-dates-in-java – Stefan