아래 코드를 실행하려고합니다. 나는 4 월 2 일 일요일부터 시작하여 5 월 3 일 2 일 오전 2시에 끝나는 dst로 시간대를 정의합니다.DST_OFFSET이 변경 될 때 변경되지 않습니다.
SimpleTimeZone st = new SimpleTimeZone(-18000000, "DSTTesting", Calendar.MARCH, 4, 1, 7200000, Calendar.MARCH, -1, 1, 7200000);
Calendar cal = Calendar.getInstance(st);
cal.set(2013, 0, 1, 0, 0, 0);
cal.set(Calendar.MILLISECOND, 0);
System.out.println("DST_OFFSET before subtracting hours : "+cal.get(Calendar.DST_OFFSET));
cal.add(Calendar.HOUR, -2);
System.out.println("DST_OFFSET after subtracting hours : "+cal.get(Calendar.DST_OFFSET));
출력은 다음과 같습니다
DST_OFFSET 뺀 시간 전에 : 0
DST_OFFSET 시간을 뺀 후 : 3,600,000
내가 2013년 1월 오전 1시에서 2 시간 뺄 때 DST_OFFSET이 변경 이유를 확실하지. 이상적으로 2013 년 1 월 1 일과 2012 년 12 월 31 일 모두 두 개의 날짜가 내가 만든 TimeZone의 DST 기간 밖에 있으므로 DST_OFFSET의 값이 모두 같아야합니다.
답장을 보내 주셔서 감사합니다. – TeeJ
3 월 넷째 주 일요일은 Calendar.MARCH, 21, -1로 작성되어야합니다. 이 변경을 수행 한 후에도 출력은 동일합니다. 시간을 빼면 DST_OFFSET이 0에서 3600000으로 변경됩니다. – TeeJ
업데이트 된 답변에 게시 된 코드가 적합한 지 알려주세요. 감사. –