x.xx小时转变为x小时x分钟

import java.math.BigDecimal;

public class Minute2Hour {

    private static final BigDecimal BIGDECIMAL_0 = BigDecimal.ZERO;
    private static final BigDecimal BIGDECIMAL_1 = BigDecimal.ONE;
    private static final BigDecimal BIGDECIMAL_60 = new BigDecimal(60);

    private static String hoursTime2MinutesTime(BigDecimal hoursTime) {
        String time = "";

        // 如果不符合直接返回空字符
        if (hoursTime == null || hoursTime.compareTo(BIGDECIMAL_0) <= 0) {
            return time;
        }
        // 设置精度为2位小数, 以防出现x小时0分钟或者x小时60分钟等bug, 因为乘60之后会使数据量级变大
        hoursTime = hoursTime.setScale(2,BigDecimal.ROUND_HALF_UP);
        //如果大于等于0小于1小时
        if (hoursTime.compareTo(BIGDECIMAL_0) >= 0 && hoursTime.compareTo(BIGDECIMAL_1) < 0) {
            time = hoursTime.multiply(BIGDECIMAL_60).setScale(0,BigDecimal.ROUND_HALF_UP).toString() + "分钟";
        } else if (hoursTime.compareTo(BIGDECIMAL_1) >= 0) { // 如果大于1小时
            //得到向下取整的小时数
            BigDecimal downTime = hoursTime.setScale(0,BigDecimal.ROUND_DOWN);

            //如果正好为小时整
            if (hoursTime.compareTo(downTime) == 0) {
                time = downTime.toString() + "小时";
            }else {
                time = downTime.toString() + "小时"
                        + hoursTime.subtract(downTime).multiply(BIGDECIMAL_60).setScale(0,BigDecimal.ROUND_HALF_UP).toString()
                        + "分钟";
            }
        }
        return time;
    }

    public static void main(String[] args) {
        BigDecimal bigDecimal = new BigDecimal("10.005");
        String s = hoursTime2MinutesTime(bigDecimal);
        System.out.println(s); // 10小时1分钟

        BigDecimal bigDecimal1 = new BigDecimal("10.0049");
        String s1 = hoursTime2MinutesTime(bigDecimal1);
        System.out.println(s1); // 10小时

        BigDecimal bigDecimal2 = new BigDecimal("10.994");
        String s2 = hoursTime2MinutesTime(bigDecimal2);
        System.out.println(s2); // 10小时59分钟

        BigDecimal bigDecimal3 = new BigDecimal("10.995");
        String s3 = hoursTime2MinutesTime(bigDecimal3);
        System.out.println(s3); // 11小时

        BigDecimal bigDecimal4 = new BigDecimal("0.0049");
        String s4 = hoursTime2MinutesTime(bigDecimal4);
        System.out.println(s4); // 0分钟
    }

}

猜你喜欢

转载自blog.csdn.net/yuqilin520/article/details/83901523
x
今日推荐