SimpleTimeZone — 간단한 시간대 규칙 구현
SimpleTimeZone — 간단한 시간대 규칙 구현
그레고리력(Gregorian calendar)과 함께 사용할 시간대를 나타내는 TimeZone의 구체적인 서브클래스예요. GMT로부터의 raw offset과 서머타임(daylight saving time) 일정의 시작·종료 규칙을 보관해요.
본문
public class SimpleTimeZone extends TimeZone
SimpleTimeZone은 각 값에 대해 단일 값만 보관하므로, GMT 오프셋의 역사적 변경이나 서머타임 일정 변경을 처리하지는 못해요. 다만 setStartYear 메서드로 서머타임 일정이 적용되기 시작하는 연도를 지정할 수 있어요.
서머타임 규칙 지정
서머타임 일정은 시작 규칙(start-rule) 과 종료 규칙(end-rule) 의 조합으로 설명돼요. 서머타임이 시작·종료되는 날은 month(월), day-of-month(일), day-of-week(요일) 값의 조합으로 지정돼요.
- 정확한 날짜 지정 —
month와day-of-month를 정확한 값으로,day-of-week를 0으로 설정해요 (예: 3월 1일). - 특정 일 이후의 요일 —
month는 정확한 값,day-of-month는 규칙이 적용되는 날,day-of-week는 음수 값으로 설정해요 (예: 4월의 두 번째 일요일). - 특정 일 이전의 요일 —
day-of-month와day-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)— 서머타임 일정이 적용되는 시작 연도를 설정해요.