我在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
任何帮助?
答案 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;
然后根据需要格式化这两个数字。