[Java] LocalDate

Jeini·2025년 9월 25일
0

☕️  Java

목록 보기
65/70

📌 LocalDate란?

java.time.LocalDate 는 날짜(년, 월, 일) 만 다루는 클래스

  • 시간(시, 분, 초) 은 없고, 타임존 정보도 없음.
  • 자바 8에서 나온 java.time 패키지 (JSR-310) 에 속해 있음.
  • 예전 Date , Calendar 의 단점을 보완하려고 만들어졌음

✅ LocalDate 주요 특징

1. 불변(Immutable)

  • 한 번 만든 LocalDate 객체는 바뀌지 않는다.
  • 날짜 계산하면 새로운 객체를 리턴.

2. 타임존이 없음

  • LocalDate.now() 는 시스템 기본 시간대의 현재 날짜를 가져옴.
    (하지만 ZoneId 지정하면 다른 지역 날짜도 뽑을 수 있다.)

3. 간단한 날짜 연산 가능

  • 더하기/빼기 (일, 주, 월, 년 단위)
  • 비교 (before, after, equal)
  • 날짜 차이 계산 (Period 클래스 활용)

✨ 사용 예시

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.Period;

public class LocalDateExample {
    public static void main(String[] args) {
        // 📌 현재 날짜
        LocalDate today = LocalDate.now();
        System.out.println("오늘 날짜: " + today);

        // 📌 특정 날짜 생성
        LocalDate birthday = LocalDate.of(1995, 5, 23);
        System.out.println("생일: " + birthday);

        // 📌 문자열 파싱
        LocalDate parsed = LocalDate.parse("2025-09-25");
        System.out.println("파싱된 날짜: " + parsed);

        // 📌 날짜 연산
        System.out.println("내일: " + today.plusDays(1));
        System.out.println("지난주: " + today.minusWeeks(1));

        // 📌 날짜 비교
        System.out.println("생일이 오늘 이전인가? " + birthday.isBefore(today));
        System.out.println("생일이 오늘 이후인가? " + birthday.isAfter(today));

        // 📌 날짜 차이
        Period period = Period.between(birthday, today);
        System.out.println("살아온 년/월/일: " + period.getYears() + "년 "
                + period.getMonths() + "개월 " + period.getDays() + "일");

        // 📌 포맷팅
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일");
        System.out.println("포맷팅된 날짜: " + today.format(formatter));
    }
}

🛠️ 자주 쓰는 메서드 정리

  • now() : 현재 날짜

  • of(int year, int month, int day) : 특정 날짜 만들기

  • parse(String text) : 문자열을 날짜로 변환

  • plusDays() / plusMonths() / plusYears() : 날짜 더하기

  • minusDays() / minusWeeks() / minusYears() : 날짜 빼기

  • isBefore() / isAfter() / isEqual() : 날짜 비교

  • getYear() , getMonth() , getDayOfMonth() : 년/월/일 가져오기

  • format(DateTimeFormatter) : 원하는 문자열 형태로 변환

profile
Fill in my own colorful colors🎨

0개의 댓글