使用JodaTime将分钟转换为小时

时间:2014-10-21 08:17:35

标签: java

我在java.lang.Long中有分钟,并希望将此值转换为java.math.BigDecimal,即。作为小时。

BigDecimal hours = BigDecimal.valueOf(minutes)  
                             .divide(BigDecimal.valueOf(DateTimeConstants.MINUTES_PER_HOUR))
                             .setScale(2,RoundingMode.HALF_DOWN);

尝试了上述方法。它返回hours,但实际上并没有我想要的方式

我需要的是:

240 Minutes : 4 Hours
230 Minutes : 3.50 hours

任何帮助?

6 个答案:

答案 0 :(得分:1)

我会将您的分钟转换为句点对象:

Minutes minutes = ...;
Long millisec = minutes*60*1000;
Period period = new Period(millisec);

然后使用Period对象,您可以询问小时数。你想要的任何东西......

答案 1 :(得分:1)

注意:230分钟不是3.50小时,它是3.83小时,我假设你的意思是" 3小时50分钟"

所以你想要的是hh:mm表示。

你不需要BigDecimals。使用此:

    long minutes = 230;
    long hours = minutes / 60;
    long minnutesRemaining = minutes % 60;

    System.out.println(hours + "." + minnutesRemaining);

答案 2 :(得分:1)

我打赌OP实际上想把分钟转换成小时和分钟。这很简单:

int minutes = 230;
System.out.println(
    String.format("%d Minutes: %d:%02d Hours", minutes, (minutes/60), (minutes%60)));

只需打印分钟数除以60(使用整数运算)和分钟模数除以60(格式为两位数,前导零按“%02d”格式。

答案 3 :(得分:0)

您可以使用BigDecimal轻松完成此操作。您可以使用divideAndRemainder()

long minutes = 230L;
BigDecimal min = new BigDecimal(minutes);
BigDecimal constant = new BigDecimal(60);
BigDecimal[] val=min.divideAndRemainder(constant);
System.out.println(val[0]+"."+val[1]+" Hours");

Out put:

3.50 Hours

答案 4 :(得分:0)

我不知道230分钟等于3.5小时的宇宙,所以我担心一些字符串操作是你最好的选择:

BigDecimal hours = new BigDecimal(
        String.format("%d.%d", minutes / 60, minutes % 60));

根据您的要求,打印出hours的价值3.50

答案 5 :(得分:0)

使用整数和模运算:

long hours = minutes / 60; /*implicit round-down*/

long numberAfterDecimal = (minutes % 1.0 /*pull out the remainder*/) * 60;

然后根据需要格式化这两个数字。