Java 与Joda一起上下取整时间

Java 与Joda一起上下取整时间,java,jodatime,Java,Jodatime,我想用or方法和Joda一起计算时间上下 向下取整似乎可以正常工作,但当我尝试向上取整时,它不能正常工作 下面是我的当前代码以及输出和所需的输出。但也许我只是不明白那些joda方法是怎么工作的 我对java和joda相当陌生,我的原始代码来自 代码: 输出:(金额=5) 期望输出:(数量=5) (dt.getMinuteOfHour()/amount)*amount已将分钟数舍入为零,因为它使用整数除法。您必须修改它以获得ceiled值:((int)Math.ceil(1.*dt.getMinu

我想用or方法和Joda一起计算时间上下

向下取整似乎可以正常工作,但当我尝试向上取整时,它不能正常工作

下面是我的当前代码以及输出和所需的输出。但也许我只是不明白那些joda方法是怎么工作的

我对java和joda相当陌生,我的原始代码来自

代码: 输出:(金额=5) 期望输出:(数量=5)
(dt.getMinuteOfHour()/amount)*amount
已将分钟数舍入为零,因为它使用整数除法。您必须修改它以获得ceiled值:
((int)Math.ceil(1.*dt.getMinuteOfHour()/amount)*amount
(注意
1.*
强制表达式使用双精度-您也可以将任何值强制转换为双精度).

感谢您的快速回复。这是我的新取整代码:DateTime up=dt.withminuteof小时((int)Math.ceil(1.*(dt.getminuteof小时()/amount))*amount.minuteof天().roundCeilingCopy();但我仍然得到了不希望得到的结果。@Hammy我犯了一个愚蠢的错误-你必须去掉除法周围的括号,才能把它变成双除法。
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