2012-02-03 4 views
0

다음 코드는 요일을 올바르게 인쇄하지 못하므로 일 및 분을 인쇄해야합니다.JODA 작업 지속 시간

이 문제가 the javadocs에 설명되어
Duration duration = new Duration(1328223198241L - 1326308781131L); 
Period p2 = new Period(duration.getMillis()); 
System.out.println(p2.getDays()); // prints 0, should print 22 days 
System.out.println(p2.getHours()); // prints 531 which is expected. 
+0

System.out.println(duration.getStandardDays());? 그들이 의미하는 바는 무엇입니까? –

+0

나는 코드가 정확하다고 확신한다. 그것은 틀린 당신의 가정입니다. 예상되는 것에 대한 이해를 확인하십시오. – duffymo

+0

Joda Time의 버전은 무엇입니까? – Bill

답변

0

: "기간은 1보다 큰 날이 모든 나머지 기간은이 경우, 가능한 최대의 정확한 필드에 시간을 저장 될 것이다."

당신이하고 싶은 것을 설명 할 때, 당신이 그것을하려는 방법과 반대되는 것이라면, 나는 우리가 도울 수있을 것이라고 확신합니다. 이 시간입니다, "기간 유형 만 정확한 필드는 표준 기간 유형에 대해 사용되는 javadoc에 따르면

Days.daysBetween(dateTime1, dateTime2).getDays() 
3

:. 예를 들어, 당신이 p2.getDays()에서 얻을려고 생각 찾을 수 따라서 년, 월, 주 및 필드는 채워지지 않습니다. " 따라서 당신은 0이되고 있습니다.

이 대안을 고려하십시오.

Duration duration = new Duration(1328223198241L - 1326308781131L);  
Period p2 = new Period(duration.getMillis()); 
System.out.println(p2.getHours()); // prints 531 which is expected. 
System.out.println(p2.toStandardDays().getDays()); // prints 22 days 
0

는 충분하지 다음을 수행합니다 거기에 그 숫자를 _are_ 무엇