【问题标题】:Duration of minutes not working correctly in Java/Android在 Java/Android 中无法正常工作的分钟持续时间
【发布时间】:2021-09-03 09:33:36
【问题描述】:

我正在尝试在我正在完成的应用程序上向我的 UI 显示以小时和分钟为单位的休息时间值。我利用另一个 StackOverflow 论坛来解决这个问题,到目前为止它工作正常,时间是显示,但我认为数学在某处是错误的..

我有两个 TextView,一个以分钟为单位显示活动时间,另一个以小时和分钟显示休息时间(因为休息时间通常会更长)。休息时间基本上是 24 小时减去活动时间。

到目前为止,我已将存储的活动时间字符串转换为 Int,从分钟值中减去 24 小时(1440 分钟),然后使用 Duration 方法将该值转换为小时和分钟 (hh:MM)效果很好,用户界面在 hh:MM 中显示了正确的减去值。

我的问题是,当我尝试使用字符串将其拆分为多个部分时,我的字符串是 (restHours + " h" + restMinutes + " minutes"),我得到了整个 restTimeInt 值的小时和分钟值(例如:23h 1430minutes)。

如何更改它以显示正确的分钟值(例如:23 小时 40 分钟)?

       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();

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

【问题讨论】:

  • Java 9 引入了 toHoursPart()toMinutesPart() 方法(因此对于更多的时间单位,这里不太相关)。您使用 Java 9 或更高版本吗?如果是,请使用toMinutesPart() 代替restMinutes,否则您必须写d.toMinutes() % 60
  • 完美,我想知道.. 我尝试使用 toHoursPart() 并且它标记为无法解析.. 感谢您的帮助@deHaar
  • 不客气!

标签: java android duration


【解决方案1】:

Duration.minus() 和 Duration.toMinutesPart()

现在你已经完成了,为什么不全力以赴 Duration 让它为你处理所有数学问题?稍加帮助,它甚至可以解析你的分钟字符串。

    String activityTimeStr = "10"; // Minutes
    Duration activityTime = Duration.parse("PT" + activityTimeStr + "M");
    
    Duration restTime = Duration.ofDays(1).minus(activityTime);
    System.out.format("Rest time: %s%n", restTime);

输出是:

休息时间:PT23H50M

正如预期的那样,23 小时 50 分钟。如果您需要这些数字 23 和 50,例如用于格式化用户,正如 deHaar 所说,请使用 DurationtoMinutesPart 方法:

    int restHours = Math.toIntExact(restTime.toHours());
    int restMinutes = restTime.toMinutesPart();
    System.out.format("Rest time: %d hours %d minutes%n", restHours, restMinutes);

休息时间:23小时50分钟

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2011-10-21
    相关资源
    最近更新 更多