在Java JDK 8中,您可以使用以下方法将数字转换为类似"3天2小时"或"2小时15分钟"的形式,同时只保留最大的两种单位:

import java.util.concurrent.TimeUnit;

public class Main {
    public static void main(String[] args) {
        long num1 = 180; // 3天2小时
        long num2 = 135; // 2小时15分钟

        String result1 = formatTime(num1);
        String result2 = formatTime(num2);

        System.out.println(result1); // 输出: 3天2小时
        System.out.println(result2); // 输出: 2小时15分钟
    }

    private static String formatTime(long time) {
        long days = TimeUnit.MILLISECONDS.toDays(time);
        long hours = TimeUnit.MILLISECONDS.toHours(time) % 24;
        long minutes = TimeUnit.MILLISECONDS.toMinutes(time) % 60;
        long seconds = TimeUnit.MILLISECONDS.toSeconds(time) % 60;

        StringBuilder sb = new StringBuilder();

        if (days > 0) {
            sb.append(days).append("天");
        }

        if (hours > 0) {
            sb.append(hours).append("小时");
        }

        if (minutes > 0) {
            sb.append(minutes).append("分钟");
        }

        if (sb.length() == 0) {
            sb.append(seconds).append("秒");
        }

        return sb.toString();
    }
}

上述代码中的 formatTime 方法将时间转换为天、小时、分钟和秒的单位,并使用 StringBuilder 构建最终的字符串表示形式。如果需要保留最大的两种单位,则只需根据需求修改 formatTime 方法中的逻辑即可

Java jdk8用jode或者time新api怎么把数字转成3天2小时或2小时15分这种形式?最后只保留最大的两种单位

原文地址: https://www.cveoy.top/t/topic/hzyO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录