2016-10-24 1 views
1

Joda-time Period 클래스 - 특히 처리 일수에 이상한 동작이 나타납니다. 다음 예제 코드에서는 26 시간을 밀리 초로 지정합니다.Joda 시간이 정확하게 일수를 계산하지 않는 것 같습니다.

// 26 hour duration 
long durationMillis = 26 * 3600 * 1000; 
Period period = new Period(durationMillis, PeriodType.dayTime()); 
// this fails because days == 0 
assertEquals(1, period.getDays()); 
// this would fail because hours == 26 
assertEquals(2, period.getHours()); 

나는 Period 26 시간 일일 2 시간임을 알 것이라고 기대했지만 그것은 하루 == 24시간 것을 인식하지 않는 것.

내가 뭘 잘못하고 있니?

답변

2

Joda-time은 개찰판입니다. 일광 절약 시간 및 기타 시간대 문제로 인해 하루의 시간 수를 알 수 없다고 생각합니다. 예를 들어 특정 날에는 23 또는 25 시간이 걸릴 수 있습니다.

강제로 하루 24 시간으로 설정하려면 Chronology을 지정해야합니다. 이는 하루에 몇 시간 정도 일정합니다.

long durationMillis = 26 * 3600 * 1000; 
Period period = new Period(durationMillis, PeriodType.dayTime(), 
    ISOChronology.getInstanceUTC()); 
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is needed to have 1 day == 24 hours 
// this works! 
assertEquals(1, period.getDays()); 
// this works! 
assertEquals(2, period.getHours()); 
관련 문제