Java

[Java]LocalDate 비교 방법(날짜 비교 방법)

DevStory 2022. 8. 11.

LocaleDate 비교 방법

두 개의 LocalDate 객체를 비교하기 위해 다음 5가지 메서드를 사용합니다.

 

5가지 메서드

- CompareTo(): 이 메서드를 호출하는 LocalDate 객체와 매개변수로 전달된 LocalDate 객체를 비교합니다.

- isBefore(): 이 메서드를 호출하는 LocalDate 객체가 매개변수로 전달된 LocalDate 객체보다 이전 날짜인지 체크합니다.

- isAfter(): 이 메서드를 호출하는 LocalDate 객체가 매개변수로 전달된 LocalDate 객체보다 이후 날짜인지 체크합니다.

- isEqual(): 이 메서드를 호출하는 LocalDate 객체와 매개변수로 전달된 LocalDate 객체가 동일한지 비교합니다.

- equals(): 이 메서드를 호출하는 LocalDate 객체와 매개변수로 전달된 LocalDate 객체가 동일한지 비교합니다.


compareTo 메서드

LocalDate 클래스에서 제공하는 compareTo() 메서드는 이 메서드를 호출하는 LocalDate 객체와 매개변수로 전달된 LocalDate 객체를 비교하며, 정수 값을 반환합니다.

 

반환 결과

- 날짜가 동일하면 0을 반환합니다.

- compareTo() 메서드를 호출한 LocalDate 객체가 이후 날짜인 경우 양수 값을 반환합니다.

- compareTo() 메서드를 호출한 LocalDate 객체가 이전 날짜인 경우 음수 값을 반환합니다.

public static void main(String args[]) {
  LocalDate todayLocalDate1 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate todayLocalDate2 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate beforeLocalDate = LocalDate.of(2022, Month.AUGUST, 1);
  LocalDate afterLocalDate = LocalDate.of(2022, Month.AUGUST, 31);

  int comPareToResult1 = todayLocalDate1.compareTo(todayLocalDate2);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 todayLocalDate2(" + todayLocalDate2 +
          ") 비교 결과: " + comPareToResult1);

  int comPareToResult2 = todayLocalDate1.compareTo(beforeLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 beforeLocalDate(" + beforeLocalDate +
          ") 비교 결과: " + comPareToResult2);

  int comPareToResult3 = todayLocalDate1.compareTo(afterLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 afterLocalDate(" + afterLocalDate +
          ") 비교 결과: " + comPareToResult3);
}

[실행 결과]

todayLocalDate1(2022-08-11)와 todayLocalDate2(2022-08-11) 비교 결과: 0
todayLocalDate1(2022-08-11)와 beforeLocalDate(2022-08-01) 비교 결과: 10
todayLocalDate1(2022-08-11)와 afterLocalDate(2022-08-31) 비교 결과: -20
다음은 compareTo() 메서드가 양수 또는 음수를 반환하는 경우입니다.

연도가 다름
- 연도 차이 수를 반환합니다.

연도는 동일하나 개월이 다름
- 개월 차이 수를 반환합니다.

연도, 개월이 동일하나 날짜가 다름
- 날짜 차이 수를 반환합니다.

isBefore 메서드

LocalDate 클래스에서 제공하는 isBefore() 메서드는 이 메서드를 호출하는 LocalDate 객체가 매개변수로 전달된 LocalDate 객체보다 이전 날짜인지 체크합니다.

 

반환 결과

- isBefore() 메서드를 호출한 LocalDate 객체가 이전 날짜인 경우 true를 반환합니다.

- isBefore() 메서드를 호출한 LocalDate 객체가 이후 날짜 또는 동일한 날짜인 경우 false를 반환합니다.

public static void main(String args[]) {
  LocalDate todayLocalDate1 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate todayLocalDate2 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate beforeLocalDate = LocalDate.of(2022, Month.AUGUST, 1);
  LocalDate afterLocalDate = LocalDate.of(2022, Month.AUGUST, 31);

  boolean isBeforeResult1 = todayLocalDate1.isBefore(todayLocalDate2);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")가 todayLocalDate2(" + todayLocalDate2 +
          ")의 이전 날짜인가? " + isBeforeResult1);

  boolean isBeforeResult2 = todayLocalDate1.isBefore(beforeLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")가 beforeLocalDate(" + beforeLocalDate +
          ")의 이전 날짜인가? " + isBeforeResult2);

  boolean isBeforeResult3 = todayLocalDate1.isBefore(afterLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")가 afterLocalDate(" + afterLocalDate +
          ")의 이전 날짜인가? " + isBeforeResult3);
}

[실행 결과]

todayLocalDate1(2022-08-11)가 todayLocalDate2(2022-08-11)의 이전 날짜인가? false
todayLocalDate1(2022-08-11)가 beforeLocalDate(2022-08-01)의 이전 날짜인가? false
todayLocalDate1(2022-08-11)가 afterLocalDate(2022-08-31)의 이전 날짜인가? true
반응형

isAfter 메서드

LocalDate 클래스에서 제공하는 isAfter() 메서드는 이 메서드를 호출하는 LocalDate 객체가 매개변수로 전달된 LocalDate 객체보다 이후 날짜인지 체크합니다.

 

반환 결과

- isAfter() 메서드를 호출한 LocalDate 객체가 이후 날짜인 경우 true를 반환합니다.

- isAfter() 메서드를 호출한 LocalDate 객체가 이전 날짜 또는 동일한 날짜인 경우 false를 반환합니다.

public static void main(String args[]) {
  LocalDate todayLocalDate1 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate todayLocalDate2 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate beforeLocalDate = LocalDate.of(2022, Month.AUGUST, 1);
  LocalDate afterLocalDate = LocalDate.of(2022, Month.AUGUST, 31);

  boolean isAfterResult1 = todayLocalDate1.isBefore(todayLocalDate2);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")가 todayLocalDate2(" + todayLocalDate2 +
          ")의 이후 날짜인가? " + isAfterResult1);

  boolean isAfterResult2 = todayLocalDate1.isBefore(beforeLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")가 beforeLocalDate(" + beforeLocalDate +
          ")의 이후 날짜인가? " + isAfterResult2);

  boolean isAfterResult3 = todayLocalDate1.isBefore(afterLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")가 afterLocalDate(" + afterLocalDate +
          ")의 이후 날짜인가? " + isAfterResult3);
}

[실행 결과]

todayLocalDate1(2022-08-11)가 todayLocalDate2(2022-08-11)의 이후 날짜인가? false
todayLocalDate1(2022-08-11)가 beforeLocalDate(2022-08-01)의 이후 날짜인가? false
todayLocalDate1(2022-08-11)가 afterLocalDate(2022-08-31)의 이후 날짜인가? true

isEqual 메서드

LocalDate 클래스에서 제공하는 isEqual() 메서드는 이 메서드를 호출하는 LocalDate 객체가 매개변수로 전달된 LocalDate 객체와 동일한지 비교합니다.

 

반환 결과

- 두 개의 LocalDate 객체가 동일한 경우 true를 반환합니다.

- 동일하지 않은 모든 경우에 대해 false를 반환합니다.

public static void main(String args[]) {
  LocalDate todayLocalDate1 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate todayLocalDate2 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate beforeLocalDate = LocalDate.of(2022, Month.AUGUST, 1);
  LocalDate afterLocalDate = LocalDate.of(2022, Month.AUGUST, 31);

  boolean isEqualResult1 = todayLocalDate1.isEqual(todayLocalDate2);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 todayLocalDate2(" + todayLocalDate2 +
          ")는 동일한가? " + isEqualResult1);

  boolean isEqualResult2 = todayLocalDate1.isEqual(beforeLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 beforeLocalDate(" + beforeLocalDate +
          ")는 동일한가? " + isEqualResult2);

  boolean isEqualResult3 = todayLocalDate1.isEqual(afterLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 afterLocalDate(" + afterLocalDate +
          ")는 동일한가? " + isEqualResult3);
}

[실행 결과]

todayLocalDate1(2022-08-11)와 todayLocalDate2(2022-08-11)는 동일한가? true
todayLocalDate1(2022-08-11)와 beforeLocalDate(2022-08-01)는 동일한가? false
todayLocalDate1(2022-08-11)와 afterLocalDate(2022-08-31)는 동일한가? false

equals 메서드

LocalDate 클래스는 Object 클래스에서 제공하는 equals() 메서드를 오버라이딩합니다. 이 메서드를 호출하는 LocalDate 객체가 매개변수로 전달된 LocalDate 객체와 동일한지 비교합니다.

 

반환 결과

- 두 개의 LocalDate 객체가 동일한 경우 true를 반환합니다.

- 동일하지 않은 모든 경우에 대해 false를 반환합니다.

public static void main(String args[]) {
  LocalDate todayLocalDate1 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate todayLocalDate2 = LocalDate.of(2022, Month.AUGUST, 11);
  LocalDate beforeLocalDate = LocalDate.of(2022, Month.AUGUST, 1);
  LocalDate afterLocalDate = LocalDate.of(2022, Month.AUGUST, 31);

  boolean EqualsResult1 = todayLocalDate1.equals(todayLocalDate2);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 todayLocalDate2(" + todayLocalDate2 +
          ")는 동일한가? " + EqualsResult1);

  boolean EqualsResult2 = todayLocalDate1.equals(beforeLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 beforeLocalDate(" + beforeLocalDate +
          ")는 동일한가? " + EqualsResult2);

  boolean EqualsResult3 = todayLocalDate1.equals(afterLocalDate);
  System.out.println("todayLocalDate1(" + todayLocalDate1 +
          ")와 afterLocalDate(" + afterLocalDate +
          ")는 동일한가? " + EqualsResult3);
}

[실행 결과]

todayLocalDate1(2022-08-11)와 todayLocalDate2(2022-08-11)는 동일한가? true
todayLocalDate1(2022-08-11)와 beforeLocalDate(2022-08-01)는 동일한가? false
todayLocalDate1(2022-08-11)와 afterLocalDate(2022-08-31)는 동일한가? false
반응형

댓글