[java] 자바 11에서 추가된 ZoneId, ZoneOffset 클래스의 활용 방법

자바 11에서는 날짜와 시간을 다루는 많은 업데이트가 이루어졌습니다. 그 중에서도 ZoneId와 ZoneOffset 클래스는 특히 시간대 정보를 처리하기에 유용한 클래스입니다. 이번 글에서는 이 두 클래스의 사용 방법에 대해 알아보겠습니다.

ZoneId 클래스

ZoneId 클래스는 특정 시간대를 나타내는 데 사용됩니다. 시간대는 UTC와 같은 표준 시간대 또는 “Asia/Seoul”과 같은 구체적인 지역 시간대일 수 있습니다.

import java.time.ZoneId;
import java.time.ZonedDateTime;

public class ZoneIdExample {

    public static void main(String[] args) {

        // 시간대 가져오기
        ZoneId seoulZone = ZoneId.of("Asia/Seoul");
        System.out.println("Seoul 시간대: " + seoulZone);

        // 현재 시간대의 날짜와 시간 가져오기
        ZonedDateTime now = ZonedDateTime.now(seoulZone);
        System.out.println("현재 시간: " + now);
    }
}

위의 예제에서는 ZoneId.of() 메서드를 사용하여 “Asia/Seoul” 시간대를 나타내는 ZoneId 객체를 생성했습니다. 그리고 ZonedDateTime.now() 메서드를 사용하여 현재 시간대의 날짜와 시간을 가져왔습니다.

ZoneOffset 클래스

ZoneOffset 클래스는 특정 시간대의 오프셋 정보를 나타냅니다. UTC를 기준으로 얼마나 앞선지 뒤쳐졌는지를 시간 단위로 표현합니다.

import java.time.ZoneOffset;
import java.time.OffsetDateTime;

public class ZoneOffsetExample {

    public static void main(String[] args) {

        // 오프셋 가져오기
        ZoneOffset seoulOffset = ZoneOffset.ofHours(9);
        System.out.println("Seoul 오프셋: " + seoulOffset);

        // 현재 시간대의 오프셋 정보 가져오기
        OffsetDateTime now = OffsetDateTime.now(seoulOffset);
        System.out.println("현재 오프셋 시간: " + now);
    }
}

위의 예제에서는 ZoneOffset.ofHours() 메서드를 사용하여 +9시간을 나타내는 ZoneOffset 객체를 생성했습니다. 그리고 OffsetDateTime.now() 메서드를 사용하여 현재 시간대의 오프셋 정보를 가져왔습니다.

결론

ZoneId와 ZoneOffset 클래스는 자바 11에서 추가된 날짜와 시간 API의 중요한 부분입니다. 이러한 클래스를 활용하여 시간대와 오프셋 정보를 손쉽게 처리할 수 있습니다. 더 많은 정보를 원한다면 Oracle Java 11 Documentation을 참조해주세요.