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
相关产品推荐
相关产品推荐

