You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java如何将分钟数值(如160)格式化为Xhrs Ymins格式?不使用第三方库

解决Java中分钟数转"Xhrs Ymins"格式的问题

首先,你的思路其实已经摸到门道了,但用SimpleDateFormat来处理单纯的分钟数值是走了弯路——这个类是用来处理日期时间对象的,并不是做分钟到小时的数值转换的最佳选择。咱们换个更直接的方式,用基础的数学运算就能搞定,完全不需要第三方库。

正确的实现方法

核心逻辑非常简单:

  • 总分钟数除以60,得到小时数(hours = totalMinutes / 60)
  • 总分钟数对60取余,得到剩余的分钟数(remainingMinutes = totalMinutes % 60)
  • 把这两个数值和对应的后缀直接拼接即可

下面是完整的可运行代码:

public static String formatDuration(int totalMinutes) {
    int hours = totalMinutes / 60;
    int minutes = totalMinutes % 60;
    // 按照你的需求拼接成目标格式
    return hours + "hrs " + minutes + "mins";
}

// 调用示例
public static void main(String[] args) {
    int time = 160;
    System.out.println(formatDuration(time)); // 输出:2hrs 40mins
}

为什么你的原代码行不通?

你原来尝试用SimpleDateFormat解析分钟字符串,这个逻辑本身就有问题:SimpleDateFormat是用来解析符合日期格式的字符串的,比如"00:10"代表10分钟,但你输入的"160"会被它当成日期的分钟字段,内部会自动转换成对应的时间(比如1970-01-01 02:40),再格式化成"HH mm"得到"02 40",不仅绕了大弯,还没法直接添加后缀,完全没必要。

额外优化(可选)

如果需要支持单数形式(比如输入61时输出"1hr 1min"),可以加个简单的判断逻辑:

public static String formatDuration(int totalMinutes) {
    int hours = totalMinutes / 60;
    int minutes = totalMinutes % 60;
    String hourSuffix = hours == 1 ? "hr" : "hrs";
    String minuteSuffix = minutes == 1 ? "min" : "mins";
    return hours + hourSuffix + " " + minutes + minuteSuffix;
}

这样代码的灵活性会更高,能适配更多场景。

内容的提问来源于stack exchange,提问作者bEtTy Barnes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:36:57