Java Joda时间段不';我似乎没有正确地计算天数

Java Joda时间段不';我似乎没有正确地计算天数,java,jodatime,period,Java,Jodatime,Period,我在Joda timePeriod类中看到了一些奇怪的行为,特别是在天处理过程中。在下面的示例代码中,我将26小时指定为毫秒 // 26 hour duration long durationMillis = 26 * 3600 * 1000; Period period = new Period(durationMillis, PeriodType.dayTime()); // this fails because days == 0 assertEquals(1, period.getDay

我在Joda time
Period
类中看到了一些奇怪的行为,特别是在天处理过程中。在下面的示例代码中,我将26小时指定为毫秒

// 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小时等于1天2小时,但它似乎没有意识到一天等于24小时


你知道我做错了什么吗?

原来乔达·泰姆就是维克特·斯马特。我猜,由于夏令时和其他时区问题,它无法知道一天的小时数。例如,在任何一天可能有23或25个小时

要将其强制为24小时/天,您需要指定一个与每天小时数一致的
年表

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());