2014-11-11 3 views
1

JodaTime Javadoc에 따르면 plusHours와 plusDays는 날짜에 시간을 추가 할 때 DST 조정을 처리합니다. 그러나, 내 테스트에서 며칠의 가치를 추가하는 1 일을 추가하는 다른 결과를 제공합니다. 누군가 다음 코드가 아래 출력을주는 이유를 설명해 줄 수 있습니까?JodaTime (일광 절약 시간제) plusHours와 plusDays 간의 차이

코드 :

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
Date date = format.parse("2014-11-01T02:00:00.000-0700"); 

System.out.println("origDate: " + date); 
System.out.println("plusDays: " + new DateTime(date).plusDays(1).toDate()); 
System.out.println("plusHours: " + new DateTime(date).plusHours(24).toDate()); 

출력 :

origDate: Sat Nov 01 02:00:00 PDT 2014 
plusDays: Sun Nov 02 02:00:00 PST 2014 
plusHours: Sun Nov 02 01:00:00 PST 2014 
+0

방금 ​​코드를 시도했습니다. 기본적으로 joda-time 2.4를 사용하여 복사/붙여 넣기가 수행됩니다. origDate : Sat Nov 01 10:00:00 CET 2014 plusDays : Sun Nov 02 10:00:00 CET 2014 plusHours : Sun Nov 02 10 : 00:00 CET 2014 – mattias

+1

Joda-Time은 사용하지 않고 SimpleDateFormat과 java.util.Date.toString()을 사용합니다. 왜? 코드 예제를 평가할 때 추가 오류 소스가 추가됩니다. –

+1

@mattias - 여기에'toDate'와'SimpleDateFormat'을 사용하면 현지 시간대가 적용됩니다. OP는 미국 태평양 표준시로 운영됩니다. –

답변

3

는 모든 지역 일 24 시간이있다. 미국 태평양 표준 시간대에서 근무한다고 가정하면, 해당 일에 25 시간이 소요됩니다. 이는 일광 절약 시간제 전환으로 인한 것입니다.

plusHours(24)을 호출하면 경과 시간이 정확히 24 시간으로 늘어납니다.

plusDays(1)으로 전화하면 날짜가 정확히 24 시간이 아니더라도 달력 날짜가 증가합니다.

관련 문제