java.time
패키지는 JDK 8부터 도입된 새로운 날짜와 시간 라이브러리로, 기존의 java.util.Date
와 java.util.Calendar
의 문제점을 해결하기 위해 설계되었습니다. 이번 개요에서는 java.time
패키지에 대해 간략하게만 소개합니다. 세부 사항들은 따로 포스팅으로 자세히 다룰 예정입니다.
java.time
패키지는 더 정확하고 사용하기 쉬운 날짜와 시간 관리를 가능하게 하는 다양한 클래스와 메서드를 제공합니다. java.time
패키지는 다양한 Class와 Enum을 제공하여 다양한 용도에 맞는 날짜 및 시간 처리를 지원합니다.DayOfWeek
, Month
ChronoUnit
, ChronoField
LocalDate
, LocalTime
, LocalDateTime
ZonedDateTime
, OffsetDateTime
, Instant
Period
, Duration
TemporalAdjusters
, DateTimeFormatter
ZoneId
, ZoneOffset
Year
, Month
, YearMonth
, MonthDay
, DayOfWeek
DayOfWeek
를 제외하곤 많이 쓰이진 않습니다. (다른 클래스의 메서드들로 충분히 대체가 되기 때문입니다)LocalDate
, LocalTime
, LocalDateTime
LocalDate
는 날짜(연, 월, 일, etc.)LocalTime
은 시간(시, 분, 초, 나노초, etc.)LocalDateTime
은 날짜와 시간을 함께 표현합니다.OffsetDateTime
, ZonedDateTime
, Instant
OffsetDateTime
은 시간대 오프셋을 포함한 날짜와 시간을 다룹니다.ZonedDateTime
은 시간대 정보를 포함한 날짜와 시간을 다룹니다. Instant
는 기준타임라인(1970-01-01 0시0분0초)으로부터의 특정 순간을 초 정밀도로 표현합니다.Period
, Duration
Period
는 연, 월, 일 단위의 기간을 표현합니다.Duration
은 초와 나노초 단위의 시간을 표현합니다.java.time
패키지에는 날짜와 시간 처리에 대한 유연성을 제공하는 여러 인터페이스가 존재합니다.TemporalAccessor
, Temporal
LocalDateTime
, OffsetDateTime
, ZonedDateTime
, Instant
등의 주요 클래스들이 위 인터페이스를 구현합니다.Temporal
은 TemporalAccessor
를 상속받는 클래스이며, 주요한 차이점은 다음과 같습니다.TemporalAccessor
: 날짜와 시간 정보를 읽을 수 있는 최소한의 기능 제공 (읽기전용)Temporal
: 날짜와 시간을 조작하기 위한 기능을 제공 (읽기&쓰기 지원)TemporalAmount
Period
와 Duration
클래스에서 구현되는 인터페이스입니다.java.time
패키지는 다양한 단위와 필드를 제공합니다ChronoUnit
& ChronoField
ChronoUnit
은 날짜와 시간의 특정 단위를 표현합니다. (참고로 "TemporalUnit" 인터페이스를 구현합니다.)ChronoField
는 특정 날짜 또는 시간 필드를 나타냅니다. (참고로 "TemporalField" 인터페이스를 구현합니다.).get()
: 특정 필드의 값을 가져옵니다..plus()
or minus()
: 특정 단위를 더하거나 뺍니다..isSupported()
: 특정 필드 또는 단위가 지원되는지 확인합니다..with()
: 특정 필드의 값을 변경합니다.DateTimeFormatter
클래스를 통해 수행됩니다. .format
) : 날짜 & 시간 -> String.parse
) : String -> 날짜 & 시간java.time
패키지의 클래스들은 이 포맷터를 활용해 직관적인 날짜와 시간 처리를 지원합니다.java.time
패키지는 기존의 날짜와 시간 처리 방식에서 발생하던 여러 문제를 해결하기 위해 도입되었으며, 다양한 클래스와 인터페이스를 통해 보다 직관적이고 강력한 날짜와 시간 처리를 지원합니다.java.time
패키지의 주요 클래스 및 인터페이스를 예제와 함께 보다 깊이 있게 다루고, 날짜 및 시간 작업을 어떻게 수행할 수 있는지 상세히 정리할 예정입니다.