LocalDate는 Java 8에서 도입된 날짜를 표현하는 java.time 패키지의 클래스입니다. 이 클래스는 연-월-일 형식의 날짜를 나타내며, 시간 정보는 포함하지 않습니다.
📌 LocalDate 주요 메서드 정리
✅ 객체 생성 관련 메서드
| 메서드 |
설명 |
예제 |
| now() |
현재 시스템의 날짜를 반환 |
LocalDate.now() |
| of(year, month, dayOfMonth) |
지정한 날짜로 객체 생성 |
LocalDate.of(2025, 2, 19) |
| ofYearDay(year, dayOfYear) |
연도와 연중 날짜(1~365/366)로 객체 생성 |
LocalDate.ofYearDay(2025, 50) |
| parse(CharSequence text) |
문자열을 LocalDate로 변환 (기본 ISO-8601 형식 yyyy-MM-dd) |
LocalDate.parse("2025-02-19") |
| parse(CharSequence text, DateTimeFormatter formatter) |
사용자 지정 형식으로 문자열 변환 |
LocalDate.parse("19-02-2025", DateTimeFormatter.ofPattern("dd-MM-yyyy")) |
✅ 날짜 정보 조회 메서드
| 메서드 |
설명 |
예제 |
| getYear() |
연도 반환 |
date.getYear() → 2025 |
| getMonth() |
월 반환 (Month enum) |
date.getMonth() → FEBRUARY |
| getMonthValue() |
월 숫자(1~12) 반환 |
date.getMonthValue() → 2 |
| getDayOfMonth() |
해당 월의 일(1~31) 반환 |
date.getDayOfMonth() → 19 |
| getDayOfWeek() |
요일 반환 (DayOfWeek enum) |
date.getDayOfWeek() → WEDNESDAY |
| getDayOfYear() |
해당 연도의 몇 번째 날인지 반환 (1~365/366) |
date.getDayOfYear() → 50 |
| lengthOfMonth() |
해당 월의 일 수(28~31) 반환 |
date.lengthOfMonth() → 29 (윤년) |
| lengthOfYear() |
해당 연도의 일 수(365/366) 반환 |
date.lengthOfYear() → 366 (윤년) |
| isLeapYear() |
윤년 여부 반환 |
date.isLeapYear() → true |
✅ 날짜 연산 메서드
| 메서드 |
설명 |
예제 |
| plusYears(n) |
n년 후 날짜 반환 |
date.plusYears(1) → 2026-02-19 |
| plusMonths(n) |
n개월 후 날짜 반환 |
date.plusMonths(3) → 2025-05-19 |
| plusWeeks(n) |
n주 후 날짜 반환 |
date.plusWeeks(2) → 2025-03-05 |
| plusDays(n) |
n일 후 날짜 반환 |
date.plusDays(10) → 2025-02-29 |
| minusYears(n) |
n년 전 날짜 반환 |
date.minusYears(1) → 2024-02-19 |
| minusMonths(n) |
n개월 전 날짜 반환 |
date.minusMonths(3) → 2024-11-19 |
| minusWeeks(n) |
n주 전 날짜 반환 |
date.minusWeeks(2) → 2025-02-05 |
| minusDays(n) |
n일 전 날짜 반환 |
date.minusDays(10) → 2025-02-09 |
✅ 비교 및 검증 메서드
| 메서드 |
설명 |
예제 |
| isBefore(otherDate) |
현재 날짜가 otherDate보다 이전인지 |
date.isBefore(LocalDate.of(2025, 12, 31)) → true |
| isAfter(otherDate) |
현재 날짜가 otherDate보다 이후인지 |
date.isAfter(LocalDate.of(2025, 1, 1)) → true |
| isEqual(otherDate) |
두 날짜가 같은지 비교 |
date.isEqual(LocalDate.of(2025, 2, 19)) → true |
✅ 특정 날짜로 변경하는 메서드
| 메서드 |
설명 예제 |
예제 |
| withYear(n) |
연도를 n으로 변경 |
date.withYear(2030) → 2030-02-19 |
| withMonth(n) |
월을 n으로 변경 |
date.withMonth(12) → 2025-12-19 |
| withDayOfMonth(n) |
일을 n으로 변경 |
date.withDayOfMonth(1) → 2025-02-01 |
| withDayOfYear(n) |
연중 날짜를 n으로 변경 |
date.withDayOfYear(365) → 2025-12-31 |
✅ 날짜 포맷 변환 메서드
| 메서드 설명 예제 |
설명 |
예제 |
| format(DateTimeFormatter formatter) |
날짜를 문자열로 변환 |
date.format(DateTimeFormatter.ofPattern("yyyy/MM/dd")) → "2025/02/19" |
✅ 기간 계산 메서드
메서드 설명 예제
| 메서드 설명 예제 |
설명 |
예제 |
| until(otherDate) |
현재 날짜부터 otherDate까지의 기간 반환 |
date.until(LocalDate.of(2026, 2, 19)) → P1Y (1년) |
| until(otherDate, ChronoUnit.YEARS) |
연 단위 차이 반환 |
date.until(LocalDate.of(2030, 2, 19), ChronoUnit.YEARS) → 5 |
| until(otherDate, ChronoUnit.DAYS) |
일 단위 차이 반환 |
date.until(LocalDate.of(2025, 2, 28), ChronoUnit.DAYS) → 9 |
✅ 기타 메서드
| 메서드 설명 예제 |
설명 |
예제 |
| atStartOfDay() |
해당 날짜의 자정 (00:00:00)을 포함한 LocalDateTime 반환 |
date.atStartOfDay() → 2025-02-19T00:00 |
| atTime(LocalTime time) |
특정 시간을 추가하여 LocalDateTime 반환 |
date.atTime(LocalTime.of(14, 30)) → 2025-02-19T14:30 |
📌 마무리
LocalDate는 날짜를 다루기에 최적화된 클래스이며, 위의 메서드들을 조합하면 다양한 날짜 연산이 가능합니다.