이전에 많은 문제가 있던 자바의 클래스(Calendar, Date)를 대체하는 날짜와 시간 API
ISO-8601을 기반으로 작성
설계 목표 → 불변, Fluent API, 명확하고 명시적, 확장 가능성
ISO-8601
날짜와 시간에 관련된 데이터를 다루는 국제 표준
LocalDate, LocalTime, LocalDateTime
날짜와 시간을 표현하는 클래스
Instant
유닉스 시간(1970-01-01, 00:00:00 UTC) 기준으로 특정 지점까지의 시간을 초로 표현하는 클래스
기계의 관점에서 시간 표현
Duration, Period
간격을 표현하는 클래스
TemporalAdjusters
복잡한 날짜 조정이 필요할 때 사용
필요한 경우 다음 인터페이스를 구현하여 커스텀 TemporalAdjuster를 구현 가능
@FunctionalInterface
public interface TemporalAdjuster {
Temporal adjustInto(Temporal temporal);
}
DateTimeFormatter
날짜와 시간 포맷 클래스
특정 날짜 패턴이나, DateTimeFormatterBuilder를 이용해서 커스텀한 포맷을 생성 가능
ZoneId, ZoneOffset
ZoneId는 지역 ID는 ‘지역/도시’
형식, ZoneOffset은 시차 UTC 기준 고정된 시간 차이 이용
ZoneId의 경우 IANA Time Zone Database에서 제공하는 지역 집합 정보 사용
Instant instant = Instant.now();
LocalDateTime utc = LocalDateTime.ofInstant(instant, ZoneOffset.UTC);