Java Date - 날짜와 시간 라이브러리 종류
자바가 공식적으로 제공하는 날짜와 시간 라이브러리 클래스 종류이다.
Overview (The Java™ Tutorials > Date Time > Standard Calendar)
This date-time Java tutorial describes how to use the java.time APIs introduced in JDK 8 to write date and time code. The core package uses the standard calendar as defined in the ISO calendar system.
Class or Enum | Year | Month | Day | Hours | Minutes | Seconds* | Zone Offset | Zone ID | toString Output | Where Discussed |
---|---|---|---|---|---|---|---|---|---|---|
Instant | 2013-08-20T15:16:26.355Z | Instant Class | ||||||||
LocalDate | 2013-08-20 | Date Classes | ||||||||
LocalDateTime | 2013-08-20T08:16:26.937 | Date and Time Classes | ||||||||
ZonedDateTime | 2013-08-21T00:16:26.941+09:00[Asia/Tokyo] | Time Zone and Offset Classes | ||||||||
LocalTime | 08:16:26.943 | Date and Time Classes | ||||||||
MonthDay | --08-20 | Date Classes | ||||||||
Year | 2013 | Date Classes | ||||||||
YearMonth | 2013-08 | Date Classes | ||||||||
Month | AUGUST | DayOfWeek and Month Enums | ||||||||
OffsetDateTime | 2013-08-20T08:16:26.954-07:00 | Time Zone and Offset Classes | ||||||||
OffsetTime | 08:16:26.957-07:00 | Time Zone and Offset Classes | ||||||||
Duration | ** | ** | ** | PT20H (20 hours) | Period and Duration | |||||
Period | *** | *** | P10D (10 days) | Period and Duration |
*: seconds 정밀한 나누초로 캡처한다. (밀리초, 나노초)
**: 이 정보를 저장하지 않으나 이 시간 단위의 메소드로 제공하고 있다.
***: ZoneDateTime 에 Period 추가하며 서머타임 및 현지 시간 차이를 준수한다.
참고
- Zone Offset
- 09:00 단위로 표시한다.
- Zone ID
- Asia/Tokyo 또는 Asia/Seoul 단위로 표시한다.
- Year, Month, YearMonth, MonthDay
- 년, 월, 년월, 달일을 다룰 때 사용되며 많이 사용되지 않는다.
- DayOfWeek 월 화 수 목 금 토 일을 나타내는 클래스가 있다.
- Instant
- UTC 협정 세계시 기준으로 시간의 한 지점을 가리킨다.
- 시간의 한 지점은 1970년 1월 1일 0시 0분 0초(UTC) 기준으로 경과한 시간이다.
- Instant 는 초 단위로만 있다.
- 나노초로 포함되어 있다.
- Period, Duration 개념
- 시간의 개념이 2개로 되어있다. 시각과 기간
- 특정 시점의 시간 (시각)
- 프로젝트 2026년 1월 1일까지 완료되어야 합니다. (시각을 가리킴)
- 다음 회의는 10시 정각입니다. (시각을 가리킴)
- 시간의 간격 (기간)
- 앞으로 2년은 완료되어야 해 (기간을 가리킴)
- 회의까지 30분 남았어 (기간을 가리킴)
- 시간의 간격을 영어로 amount of time 시간의 양으로 부르고 있다.
- Period
- 두 날짜의 사이의 간격을 년, 월, 일 단위로 나타냄
- Duration
- 두 시간의 사이의 간격을 시, 분, 초(나노초) 단위로 나타냄
Local Date, Time
로컬과 관련된 클래스를 알아보자.
로컬 날짜 및 시간 클래스
- LocalDate
- 날짜만 표현할 때 사용. 년, 월, 일 로 다룬다.
- 예: 2025-06-19
- LocalTime
- 시간만 표현할 때 사용. 시, 분, 초로 다룬다.
- 예: 16:20:40.221
- LocalDateTime
- LocalDate 클래스와 LocalTime 합친 개념.
- 예: 2025-06-19T16:20:40:221
Local은 현지 및 지역을 나타내므로 타임존이 적용되지 않는다. 특정 지역의 날짜 및 시간만 고려된다.
사용 분야
- 애플리케이션 개발로 국내 서비스만 제공
- 나의 생일, 기념일 등으로 사용
Zone Date, Time
존 날짜 및 시간 클래스
- ZonedDateTime
- 타임존과 시간 대를 고려한 날짜 및 시간을 표현하고 싶을 때 사용.
- 예: 2025-06-19T16:20:40.221+09:00[Asia/Seoul]
- UTC 협정 세계시로부터 시간대 차이가 있다. +09:00 한국의 시간 오프셋이다.
- UTC에서 Asia/Seoul 타임존이라 한다. 오프셋과 일광 절약 시간제 정보가 있다.
- ZoneDateTime은 일광 절약 시간제가 적용된다.
- OffsetDateTime
- 시간 대를 고려한 날짜 및 시간을 표현할 때 사용.
- 타임존이 없다. UTC에 고정된 시간대 오프셋만이 포함된다.
- 예) 2025-06-19T16:20:40.221+09:00
- 일광 절약 시간제가 적용되지 않음