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을 쓰세요.


코딩 영단어 학습 📝

코딩에서 영어 단어의 의미만 정확히 이해해도 절반은 성공입니다! 오늘 배운 핵심 영단어들을 다시 한번 짚고 넘어가 볼까요?

  • Local: 로컬, 지역의. (LocalDateTime에서 컴퓨터가 켜져 있는 현재 위치(국가, 지역)의 시간대 포맷에 맞춰 날짜와 시간을 보여주는 스마트한 최신 자바 시간 객체)
  • Calendar: 캘린더, 달력. (과거에 많이 썼지만, 사람이 쓰는 1월을 컴퓨터는 0으로 기억하는 치명적인 불편함 때문에 요즘은 서랍 속에 넣어둔 구식 자바 달력 클래스)
서브목차