java.time API 기초
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
난이도
초급
JDK 지원
java.time API 기초
사용 가능
JDK 8 (2014년 3월) 이후 널리 사용 가능
동작 원리
java.time은 LocalDate, LocalTime, LocalDateTime, Instant, ZonedDateTime을 제공합니다 — 모두 불변이고 스레드 안전합니다. 월은 1부터 시작합니다. 더 이상 Calendar.JANUARY = 0 같은 혼동이 없습니다.
관련 문서