Java JDK 8 数字转时间格式 (3天2小时、2小时15分钟) - 最优代码示例
Java JDK 8 数字转时间格式 (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 方法中的逻辑即可。
代码解释:
- 使用
TimeUnit类将毫秒转换为天、小时、分钟和秒。 - 使用
%操作符获取余数,确保每个时间单位的取值范围正确。 - 使用
StringBuilder对象高效地构建最终的字符串表示形式。
示例:
long num1 = 180; // 3天2小时
String result1 = formatTime(num1); // 输出: 3天2小时
代码优化:
您可以根据实际需要修改 formatTime 方法中的逻辑,例如:
- 只保留最大的两种单位,例如:'3天2小时'、'2小时15分钟'、'15分钟' 等。
- 调整时间单位的顺序,例如:'2小时15分钟'、'15分钟2小时' 等。
通过以上方法,您可以轻松地将数字转换为所需的格式,并实现灵活的时间格式化功能。
希望本文对您有所帮助!如果您有任何问题或建议,请随时在评论区留言。
原文地址: https://www.cveoy.top/t/topic/o2lz 著作权归作者所有。请勿转载和采集!