개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.22 07:44

IntlTimeZone::getOffset 관련 질문

목록
  • 로직수호자 8시간 전 2025.05.22 07:44 새글
  • 2
    1
제가 공부 중인 Java의 IntlTimeZone 클래스에 대해 질문을 드리겠습니다.

IntlTimeZone 클래스의 getOffset 메소드는 시간대와 날짜를 입력받아 해당 시간대에서의 오프셋을 반환합니다. 하지만 이 메소드의 반환값은 int 타입으로 반환되는데, 이는 1970년 1월 1일부터 2038년 1월 19일까지의 오프셋만 반환할 수 있습니다. 이에 대해 질문을 드리겠습니다.

IntlTimeZone 클래스의 getOffset 메소드는 2038년 1월 19일 이후의 오프셋을 반환할 수 있는 방법은 없을까요?

    댓글목록

    profile_image
    나우호스팅  8시간 전



    IntlTimeZone 클래스의 getOffset 메소드는 현재 Java의 표준 라이브러리에 포함되어 있지 않습니다. 하지만 Java 8 이상의 버전에서는 java.time 패키지에 포함된 ZoneOffset 클래스를 사용하여 2038년 1월 19일 이후의 오프셋을 계산할 수 있습니다.

    ZoneOffset 클래스의 getSeconds 메소드를 사용하여 오프셋을 계산할 수 있습니다. 이 메소드는 ZoneId 객체를 입력받아 해당 시간대에서의 오프셋을 초 단위로 반환합니다.

    예를 들어, ZoneId.of("Asia/Seoul")을 입력받아 한국 시간대의 오프셋을 계산할 수 있습니다.

    ZoneId zone = ZoneId.of("Asia/Seoul");
    long offset = zone.getRules().getOffset(Instant.now()).getTotalSeconds();

    이 방법을 사용하여 2038년 1월 19일 이후의 오프셋을 계산할 수 있습니다.

    ZoneId zone = ZoneId.of("Asia/Seoul");
    Instant instant = Instant.now();
    while (instant.isBefore(Instant.ofEpochSecond(2534023000))) {
    long offset = zone.getRules().getOffset(instant).getTotalSeconds();
    System.out.println(instant + "의 오프셋: " + offset);
    instant = instant.plusSeconds(1);
    }

    이 예제에서는 2038년 1월 19일 이후의 오프셋을 계산하여 출력합니다.

    2025-05-22 07:45

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 21,424건 / 4 페이지

검색

게시물 검색