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 方法中的逻辑即可。

代码解释:

  1. 使用 TimeUnit 类将毫秒转换为天、小时、分钟和秒。
  2. 使用 % 操作符获取余数,确保每个时间单位的取值范围正确。
  3. 使用 StringBuilder 对象高效地构建最终的字符串表示形式。

示例:

long num1 = 180; // 3天2小时
String result1 = formatTime(num1); // 输出: 3天2小时

代码优化:

您可以根据实际需要修改 formatTime 方法中的逻辑,例如:

  • 只保留最大的两种单位,例如:'3天2小时'、'2小时15分钟'、'15分钟' 等。
  • 调整时间单位的顺序,例如:'2小时15分钟'、'15分钟2小时' 等。

通过以上方法,您可以轻松地将数字转换为所需的格式,并实现灵活的时间格式化功能。

希望本文对您有所帮助!如果您有任何问题或建议,请随时在评论区留言。

Java JDK 8 数字转时间格式 (3天2小时、2小时15分钟) - 最优代码示例

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

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