繁体   English   中英

Joda-Time Period似乎无法正确计算天数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM