상세 컨텐츠

본문 제목

ZonedDateTime

Java

by Wanderer Kim 2025. 5. 22. 23:08

본문

728x90

타임존이란?

"Asia/Seoul" 같은 타임존 안에는 일광 절약 시간제에 대한 정보와 UTC+09:00와 같은 UTC로부터 시간 차이인 오프셋 정보를 모두 포함하도 있다.

ZoneId

java는 타임존 정보를 ZoneId 클래스로 제공한다.

  • 메서드
    • ZoneId.systemDefault(): 시스템이 사용하는 기본 ZoneId를 반환한다. 
      • 각 PC 환경 마다 다른 ZoneId를 반환할 수 있다.
    • ZoneId.of(): 타임존을 집적 제공해서 ZoneId를 반환한다.

ZonedDateTime

ZonedDateTime은 LocalDateTime과 타임존 정보를 포함하는 ZoneId가 합쳐진 클래스이다.

public class ZonedDateTime {
	private final LocalDateTime dateTime;
	private final ZoneOffset offset;
	private final ZoneId zone;
}

 

표현 예시

  • 2013-11-21T08:20:30.213+9:00[Asia/Seoul]
  • +09:00은 UTC로 부터 시간대 차이이다. 오프셋이라고 부른다.
  • Asia/Seoul은 타임존이라고 한다. 티암존을 알면 오프셋도 알 수 있다.
  • ZoneId를 알면 일광 절약 시간제에 대한 정보도 알 수 있다.
package time;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class ZonedDateTimeMain {
	public static void main(String[] args) {
		ZonedDateTime nowZdt = ZonedDateTime.now();
		System.out.println("nowZdt = " + nowZdt);
		LocalDateTime ldt = LocalDateTime.of(2030, 1, 1, 13, 30, 50);
		ZonedDateTime zdt1 = ZonedDateTime.of(ldt, ZoneId.of("Asia/Seoul"));
		System.out.println("zdt1 = " + zdt1);
		ZonedDateTime zdt2 = ZonedDateTime.of(2030, 1, 1, 13, 30, 50, 0,ZoneId.of("Asia/Seoul"));
		System.out.println("zdt2 = " + zdt2);
		ZonedDateTime utcZdt = zdt2.withZoneSameInstant(ZoneId.of("UTC"));
		System.out.println("utcZdt = " + utcZdt);
	}
}
nowZdt = 2024-02-09T12:02:13.457712+09:00[Asia/Seoul]
zdt1 = 2030-01-01T13:30:50+09:00[Asia/Seoul]
zdt2 = 2030-01-01T13:30:50+09:00[Asia/Seoul]
utcZdt = 2030-01-01T04:30:50Z[UTC]

메서드

  • 생성
    • now(): 현재 날짜와 시간을 기준으로 생성한다. 이때 ZoneId는 현재 시스템을 따른다.
    • of(): 특정 날짜와 시간을 기준으로 생성한다. ZoneId를 추가해야 한다.
  • 타임존 변경
    • withZoneSameInstant(ZoneId): 타임존을 변경한다. 타임존에 맞추어 시간도 함께 변경한다. 해당 메서드를 사용하면 지금 다른 나라는 며시인지 확인 가능하다.
반응형

'Java' 카테고리의 다른 글

Instant  (1) 2025.05.23
OffsetDateTime  (0) 2025.05.23
Context Switching이란?  (0) 2025.05.16
Process와 Thread  (2) 2025.05.16
LocalDate, LocalTime, LocalDateTime  (0) 2025.05.13

관련글 더보기

댓글 영역