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

Java/Android中Duration.ofMinutes拆分时分时分钟显示错误如何解决?

问题根因

代码中调用的Duration.toMinutes()返回的是当前Duration对象对应的总分钟数,而非扣除整小时后剩余的分钟部分,才会出现总分钟数直接拼接的错误结果。

修复方案

分两种版本适配:

1. Java 9及以上版本

直接用Duration内置的toMinutesPart()方法,即可获取扣除整小时后的剩余分钟数:

int activeTimeValue = Integer.parseInt(activityTime); // ex: 10 mins
int day = 1440;
int restTimeInt = day - activeTimeValue; // 1430 mins
Duration d = Duration.ofMinutes(restTimeInt);
int restHours = (int) d.toHours();
int restMinutes = d.toMinutesPart(); // 直接获取剩余分钟,示例中1430分钟对应返回50

restTimeTV.setText(restHours + " hr " +  restMinutes + " mins");

如果需要处理单复数显示(比如1小时显示1 hr,多小时显示hrs,分钟同理),可以加简单的判断逻辑:

String hourStr = restHours == 1 ? restHours + " hr" : restHours + " hrs";
String minuteStr = restMinutes == 1 ? restMinutes + " min" : restMinutes + " mins";
restTimeTV.setText(hourStr + " " + minuteStr);

2. Java 8兼容版本

如果你的项目还在使用Java 8,没有toMinutesPart()方法,手动对总分钟数取60的模即可得到剩余分钟:

int activeTimeValue = Integer.parseInt(activityTime); // ex: 10 mins
int day = 1440;
int restTimeInt = day - activeTimeValue; // 1430 mins
Duration d = Duration.ofMinutes(restTimeInt);
int restHours = (int) d.toHours();
int restMinutes = (int) (d.toMinutes() % 60); // 总分钟数对60取模得到剩余分钟

restTimeTV.setText(restHours + " hr " +  restMinutes + " mins");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:15:01