我希望使用roundCeilingCopy或roundFloorCopy方法向Joda上下调整一次。
向下舍入似乎正常,但是当我尝试向上舍入时,它无法正常工作。
下面是我当前的输出和所需输出的代码。但也许我只是不明白这些joda方法是如何工作的?
我是java和joda的新手,并从here
获取了原始代码public static long RoundTime(long time, int amount) {
DateTime dt = new DateTime(time);
System.out.println("Rounding time: " + dt.toString());
DateTime up = dt.withMinuteOfHour((dt.getMinuteOfHour() / amount) * amount)
.minuteOfDay().roundCeilingCopy();
System.out.println("Finished Rounding Time Up (" + amount + "): "
+ up.toString());
DateTime down = dt.withMinuteOfHour((dt.getMinuteOfHour() / amount) * amount)
.minuteOfDay().roundFloorCopy();
System.out.println("Finished Rounding Time Down (" + amount + "): "
+ down.toString());
}
Rounding time: 2014-01-21T13:12:00.000-07:00
Finished Rounding Time Up (5): 2014-01-21T13:10:00.000-07:00
Finished Rounding Time Down (5): 2014-01-21T13:10:00.000-07:00
Rounding time: 2014-01-21T13:12:00.000-07:00
Finished Rounding Time Up (5): 2014-01-21T13:15:00.000-07:00
Finished Rounding Time Down (5): 2014-01-21T13:10:00.000-07:00
答案 0 :(得分:1)
(dt.getMinuteOfHour() / amount) * amount
已将分钟向零舍入,因为它使用整数除法。你必须修改它来获得ceiled值:((int) Math.ceil(1. * dt.getMinuteOfHour() / amount) * amount
(注意1. *
强制表达式使用双精度 - 你也可以将任何值转换为double。)