Java jdk8用jode或者time新api怎么把数字转成3天2小时或2小时15分这种形式?最后只保留最大的两种单位
在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 方法中的逻辑即可
原文地址: https://www.cveoy.top/t/topic/hzyO 著作权归作者所有。请勿转载和采集!