SimpleTimeZone — 간단한 시간대 규칙 구현

SimpleTimeZone — 간단한 시간대 규칙 구현

그레고리력(Gregorian calendar)과 함께 사용할 시간대를 나타내는 TimeZone의 구체적인 서브클래스예요. GMT로부터의 raw offset과 서머타임(daylight saving time) 일정의 시작·종료 규칙을 보관해요.

출처: Java API Reference

본문

public class SimpleTimeZone extends TimeZone

SimpleTimeZone은 각 값에 대해 단일 값만 보관하므로, GMT 오프셋의 역사적 변경이나 서머타임 일정 변경을 처리하지는 못해요. 다만 setStartYear 메서드로 서머타임 일정이 적용되기 시작하는 연도를 지정할 수 있어요.

서머타임 규칙 지정

서머타임 일정은 시작 규칙(start-rule)종료 규칙(end-rule) 의 조합으로 설명돼요. 서머타임이 시작·종료되는 날은 month(월), day-of-month(일), day-of-week(요일) 값의 조합으로 지정돼요.

  • 정확한 날짜 지정monthday-of-month를 정확한 값으로, day-of-week를 0으로 설정해요 (예: 3월 1일).
  • 특정 일 이후의 요일month는 정확한 값, day-of-month는 규칙이 적용되는 날, day-of-week는 음수 값으로 설정해요 (예: 4월의 두 번째 일요일).
  • 특정 일 이전의 요일day-of-monthday-of-week를 음수 값으로 설정해요 (예: 3월 21일 이전의 마지막 수요일).
  • 월의 마지막 요일day-of-week를 값으로, day-of-month를 -1로 설정해요 (예: 10월의 마지막 일요일).

시간대별로 서머타임 시작·종료 시각은 하루 안의 밀리초 값으로 지정하며, WALL_TIME, STANDARD_TIME, UTC_TIME의 세 가지 모드가 있어요.

주요 생성자

  • SimpleTimeZone(int rawOffset, String ID) — raw offset과 ID로 시간대를 생성해요.
  • SimpleTimeZone(int rawOffset, String ID, int startMonth, int startDay, int startDayOfWeek, int startTime, int endMonth, int endDay, int endDayOfWeek, int endTime) — raw offset과 서머타임 시작·종료 규칙으로 생성해요.

주요 메서드

  • getRawOffset() — GMT 기준 오프셋(밀리초)을 반환해요.
  • setRawOffset(int offsetMillis) — GMT 기준 오프셋을 설정해요.
  • inDaylightTime(Date date) — 주어진 날짜가 서머타임 기간이면 true를 반환해요.
  • useDaylightTime() — 이 시간대가 서머타임을 사용하면 true를 반환해요.
  • setStartRule(...) / setEndRule(...) — 서머타임 시작·종료 규칙을 설정해요.
  • setStartYear(int year) — 서머타임 일정이 적용되는 시작 연도를 설정해요.

더 알아보기 (Learn more)