Date/Time 초급

Date와 Calendar 대신 불변이고 명확한 날짜/시간 타입을 사용합니다.

✕ Pre-Java 8
// Mutable, confusing, zero-indexed months
Calendar cal = Calendar.getInstance();
cal.set(2025, 0, 15); // January = 0!
Date date = cal.getTime();
// not thread-safe
✓ Java 8+
LocalDate date = LocalDate.of(
    2025, Month.JANUARY, 15);
LocalTime time = LocalTime.of(14, 30);
Instant now = Instant.now();
// immutable, thread-safe
이 코드에 문제가 있나요? 알려주세요.
🔒

불변

날짜/시간 값이 실수로 수정될 수 없습니다.

📖

명확한 API

0이 아닌 Month.JANUARY, 2가 아닌 DayOfWeek.MONDAY.

🛡️

스레드 안전

동기화 없이 스레드 간에 자유롭게 공유합니다.

이전 방식
Date + Calendar
모던 방식
java.time.*
JDK 버전
8
난이도
초급
java.time API 기초
사용 가능

JDK 8 (2014년 3월) 이후 널리 사용 가능

java.time은 LocalDate, LocalTime, LocalDateTime, Instant, ZonedDateTime을 제공합니다 — 모두 불변이고 스레드 안전합니다. 월은 1부터 시작합니다. 더 이상 Calendar.JANUARY = 0 같은 혼동이 없습니다.

공유 𝕏 🦋 in