2015-02-05 2 views
1

누군가 다음 테스트가 실패한 이유를 설명 할 수 있습니까?기간을 Joda에서 기간으로 변환하는 방법은 무엇입니까?

@Test 
public void testDuration() { 
    Duration duration = Duration.standardDays(1); 
    assertTrue(duration.getStandardMinutes() == 1440); //OK 
    assertTrue(duration.toPeriod().getMinutes() == 1440); //NOK. result = 0 
    assertTrue(new Period(duration.getMillis()).getMinutes() == 1400); //NOK. result = 0 
} 

답변

2

Period (JodaTime)은 "set of duration field values"을 나타냅니다. 따라서, 방법 getMinutes(), getHours() ... 그 필드의 값을 리턴하는 대신 분 시간을 계산된다 .. 또한

Duration의 전환은 PeriodType와 연대에 따른 필드 세트 . 이 API ( http://joda-time.sourceforge.net/apidocs/org/joda/time/ReadableDuration.html#toPeriod%28%29)에서

:

기간 toPeriod()

는 표준 기간 유형 및 ISO의 연대기를 사용하여 기간 인스턴스에이 기간을 변환합니다.

기간 형식의 정확한 필드 만 사용됩니다. 따라서 해당 기간의시, 분, 초 및 밀리 초 필드 만 사용됩니다. 년, 월, 주 및 일 필드는 채워지지 않습니다.

지속 시간이 1 일 미만으로 작 으면이 방법은 예상대로 필드를 균등하게 분할하여 수행합니다. 기간이 1 일보다 길면 나머지 모든 기간이 가장 큰 사용 가능 시간 (이 경우 시간)에 저장됩니다.

이 의미 Duration의 A와 일 모든 정보는 시간 필드에 저장하고 분 Interval의 차이점을 잘 설명 this question를 참조 0

에서 유지되고, 정확히 24 시간이있다, DurationPeriod.

1

1 일 동안 24 시간의 기간이 동일하지 here

없고 60 분 1 시간 동일 참조. 기간은 추상화 된 기간 정의를 나타 내기 때문입니다 (예 : 하루가 실제로 24 시간이 아니거나, 일광 절약 시간제 경계에서 23 또는 25 일 수 있음).

관련 문제