[英]Joda-time Period doesn't seem to calculate days correctly
我在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个小时。
知道我在做什么错吗?
原来,乔达时代是检票口smaaart。 我想由于夏时制和其他时区问题,它无法得知一天中的小时数。 例如,在任何一天中可能有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());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.