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 EnumYearMonthDayHoursMinutesSeconds*Zone OffsetZone IDtoString OutputWhere Discussed
Instant     
checked
  2013-08-20T15:16:26.355ZInstant Class
LocalDate
checked
checked
checked
     2013-08-20Date Classes
LocalDateTime
checked
checked
checked
checked
checked
checked
  2013-08-20T08:16:26.937Date and Time Classes
ZonedDateTime
checked
checked
checked
checked
checked
checked
checked
checked
2013-08-21T00:16:26.941+09:00[Asia/Tokyo]Time Zone and Offset Classes
LocalTime   
checked
checked
checked
  08:16:26.943Date and Time Classes
MonthDay 
checked
checked
     --08-20Date Classes
Year
checked
       2013Date Classes
YearMonth
checked
checked
      2013-08Date Classes
Month 
checked
      AUGUSTDayOfWeek and Month Enums
OffsetDateTime
checked
checked
checked
checked
checked
checked
checked
 2013-08-20T08:16:26.954-07:00Time Zone and Offset Classes
OffsetTime   
checked
checked
checked
checked
 08:16:26.957-07:00Time Zone and Offset Classes
Duration  ******
checked
  PT20H (20 hours)Period and Duration
Period
checked
checked
checked
   ******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
    • 일광 절약 시간제가 적용되지 않음