gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:58:42 24 4
gpt4 key购买 nike

我在 Joda 时间 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 小时。

知道我做错了什么吗?

最佳答案

原来 Joda-time 是邪恶的 smaaaaart。我猜想由于夏令时和其他时区问题,它无法知道一天中的小时数。例如,任何特定的一天可能有 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());

关于java - Joda-time Period 似乎无法正确计算天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40228167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com