15.8 날짜와 시간 클래스


1. 자바의 시간 여행 🕰️

자바에서 날짜와 시간을 다루는 방법은 역사적으로 진화해 왔습니다.

세대 클래스 패키지 특징 별명
1세대 Date java.util 대부분 기능이 삭제됨(Deprecated). 구식 시계
2세대 Calendar java.util 사용하기 복잡함(Month가 0부터 시작). 불편한 달력
3세대 LocalDateTime java.time 강력 추천! 직관적이고 기능이 많음. 스마트 워치


2. 구식 방식 (Date, Calendar)

1) Date

현재 날짜를 단순히 담는 용도로만 주로 씁니다.

Date now = new Date();
System.out.println(now); // 출력 형식이 안 예쁨 (Sun Feb 20 ...)

2) Calendar

날짜 계산은 가능하지만, 사용법이 어렵습니다. (주의: 월(Month)이 0부터 시작해서 1월이 0입니다!)

Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR);
int month = now.get(Calendar.MONTH) + 1; // 꼭 +1 해줘야 함!


3. 스마트 방식 (LocalDateTime) 🌟

Java 8부터 도입된 java.time 패키지는 매우 직관적입니다.

1) 현재 시간 얻기

LocalDateTime now = LocalDateTime.now();
System.out.println(now); // 2024-02-20T10:30:00.123

2) 날짜 조작 (시간 여행)

메소드 이름만 봐도 기능을 알 수 있습니다.

LocalDateTime target = now
    .plusYears(1)    // 1년 뒤
    .minusMonths(2)  // 2달 전
    .plusDays(7);    // 7일 뒤

System.out.println(target);

3) 날짜 비교

if (now.isBefore(target)) {
    System.out.println("현재가 미래보다 이전입니다."); // 출력됨
}

핵심: 새로 코드를 짠다면 무조건 LocalDateTime을 쓰세요.

서브목차