JAVA

Java 두 날짜 비교 - Java 8 기점 차이

1son 2026. 10. 9. 16:54

자바에서 날짜형식 비교 - 8이상과 이하 다른점 우리는 8이상

[Java] 날짜 비교하기 ( LocalDate, LocalDateTime, Date, Calendar) - 어제 오늘 내일

 

[Java] 날짜 비교하기 ( LocalDate, LocalDateTime, Date, Calendar)

Java API를 이용하여 날짜와 시간을 다루는 방법을 알아보고 있습니다. [Java] 현재 날짜, 현재 시간 구하기 [Java] 문자열을 날짜로 변환하기 (Date, LocalDateTime) [Java] 특정 날짜의 요일 구하기 (숫자, 영

hianna.tistory.com

 

개발을 하면서 날짜를 비교해야하는 경우가 있다. 

예를 들어 어떤 쿠폰을 발행해주는데 그 일자가 배포 즉시가 아닌 

3일 후인 10월 12일이라던지 . 

 

그렇게 되면 하드 코딩으로 직접 날짜를 입력해서 now 와 비교해주는데 

이때 사용하는 날짜에 대해서 Java 에서는 어떤 타입을 권장하고 있는지, 어떤 타입들이 존재하고 각각의 차이는 무엇인지 알아볼 것이다. 

 

- LocalDate

- LocalDateTime

- DateCalendar 

 

이 세개를 주요하게 볼 것

 

Java 8 이후 

1. LocalDate

2. LocalDateTime

3. LocalDate 와 LocalDateTime 비교

4. LocalDateTime 에서 년월일시분단위까지만 비교하기 

 

Java 8 이전

1. Date

2. Calendar

 

우리 회사는 Java8 이상을 쓰고 있기 때문에 Date, Calendar 는 지양하는 것이 좋다 

 

 1. 핵심 개념 

날짜 비교는 크게 4가지 메서드로 할 수 있음 

메서드 의미 반환타입
isAfter() 기준 날짜보다 이후인가? boolean
isBefore() 기준 날짜보다 이전인가? boolean
isEqual() 날짜가 같은가? boolean
compareTo() 두 날짜의 순서 비교 int

 

 

예를 들어 두 날짜가 있다고 하면 

LocalDate date1 = LocalDate.of(2026,10,9);
LocalDate date2 = LocalDate.of(2026,10,10);

- LocalDate 클래스를 사용해서 날짜 객체 2개를 만드는 코드 

LocalDate.of() -> 지정한 연도, 월, 일로 날짜 객체를 생성하는 메서드 

 

date1.isBefore(date2) -> true

date1.isAfter(date2) -> false

date1.isEqual(date2) -> false

date1.compareTo(date2) -> 음수 

 

 

2. compareTo() 는 조금 더 알아두자면 

날짜의 대소 관계를 숫자로 반환함 

반환값 의미
0 두 날짜가 같음
양수 앞의 날짜가 더 늦음
음수 앞의 날짜가 더 이름

 

date1.compareTo(date2);

date1 이 더 이른 날짜면 음수 

date1이 더 늦은 날짜면 양수 

 

3. LocalDate와 LocalDateTime의 차이 

LocalDate : 날짜만 비교할 때 사용함 

시간 정보는 없음 , 년월일만 존재 

LocalDate date = LocalDate.of(2026,10,9);

 

LocalDateTime : 날짜와 시간까지 비교할 때 사용 

LocalDateTime date = LocalDateTime.of(2026,10,9,15,30);

년월일시분초나노초까지 가능 

 

시간은 무시하고 날짜만 비교하고 싶다면 toLocalDate() 사용하면 됨 

dateTime1.toLocalDate().isEqual(dateTime2.toLocalDate());

 

 

4. Java 8 이전의 날짜 비교 

기존 코드에서는 Date, Calendar를 사용할 수 있음 

클래스  비교 메서드
Date after(), before(), equals(), compareTo()
Calendar after(), before(), equals(), compareTo()

 

 

일반적으로 날짜만 필요하면 LocalDate, 

날짜와 시간이 필요하면 LocalDateTime을 우선 고려하면 됨 

 

 


LocalDate : 날짜만 

LocalDateTime : 날짜 + 시간 

isAfter() : 이후인가? 

isBefore() : 이전인가? 

isEqual() : 같은가? 

compareTo() : 같으면 0, 이후이면 양수, 이전이면 음수 

toLocalDate() : 시간 정보를 제외하고 날짜만 비교 

Date, Calendar : Java8 이전부터 사용하던 날짜 관련 클래스