자바에서 날짜형식 비교 - 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 이전부터 사용하던 날짜 관련 클래스
'JAVA' 카테고리의 다른 글
| Postgresql 타입과 자바 타입 매핑 (0) | 2026.10.09 |
|---|---|
| Java의 wrapper class와 제네릭 기초 개념 (0) | 2026.10.09 |
| 전략 패턴 이란 ? (0) | 2026.05.14 |
| 7장 여러 데이터를 하나에 넣을 수는 없을까요? (0) | 2023.03.07 |
| 6장 제가 조건을 좀 따져요 (0) | 2023.02.17 |