如何在持续时间中获得ceil值

时间:2018-03-19 09:26:37

标签: java datetime java-8

我有Duration个对象我希望以天为单位返回完整的持续时间(向上舍入),因此适用于:

  1. 1m - 1d
  2. 1d - 1d
  3. 1d1h - 2d
  4. 1d1m - 2d
  5. 不幸的是toDays()方法只返回整天。有没有获得ceil值的方法?

1 个答案:

答案 0 :(得分:2)

使用整数除法进行ceil的方法是将分数加1:

(numerator + denominator - 1) / denominator

所以,在这里做同样的事情:在你的持续时间内加1纳秒不到1天,然后使用toDays()

duration.plusDays(1).minusNanos(1).toDays()

查看in the docs,它表明toDays()可能只考虑第二精度。但是,this little demo表明它的工作精确到纳秒级(至少对于非负时长)。