チェックインしようとしているJava 8日付が10年以上20年以上の場合。Date.before()
And Date.after()
と_currentDate-10
_ yearsおよび_currentDate-20
_ yearsを引数として渡します。
before()
メソッドとafter()
メソッドで渡すために、日付形式で10年と20年の日付を取得する最もクリーンな方法を誰かが提案できますか?
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
_インスタンスに変換することなく、これらのインスタンスでこれらのメソッドを使用できます。
Java.time.LocalDate を使用してこれを行うことができます。例:2005年1月1日がその期間の間にあるかどうかを確認する必要がある場合は、次を使用できます。
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
}
別の可能性は、チェックする日付と上限日の間の年数を取得することです。年の数が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");
}
}