0

检查下面的函数,它的显示如下124:45 *表示它没有将小时转换为分钟。像这样:

在此处输入图像描述

请在我的以下功能中进行更改,以提供正确的时间。

    private String formatedTime(int mCuurentPosition) {
        String totalout="";
        String totalnew="";
        String seconds=String.valueOf(mCuurentPosition % 60);
        String mints =String.valueOf(mCuurentPosition / 60);
        totalout =mints + ":" + seconds;
        totalnew=mints + ":" + "0" + seconds;
        if (seconds.length()==1){
            return totalnew;
        }else {
            return totalout;

        }
4

1 回答 1

0

java.time.Duration、去糖和 String.format()

private String formattedTime(int mCurrentPosition) {
    Duration pos = Duration.ofSeconds(mCurrentPosition);
    long hours = pos.toHours();
    if (hours == 0) {
        return String.format("%d:%02d", pos.toMinutes(), pos.toSecondsPart());
    } else {
        return String.format("%d:%02d:%02d",
                hours, pos.toMinutesPart(), pos.toSecondsPart());
    }
}

我没有 Android 开发环境,所以不能 100% 确定脱糖可以解决这个问题,但我当然敢这样希望。toMinutesPartandtoSecondsPart方法是在 Java 9 中引入的。自String.format()Java 1.5 以来就已经存在,所以无论如何让它为您进行格式化。

请参阅上面的方法:

    System.out.println(formattedTime(47));
    System.out.println(formattedTime(4747));

输出是:

0:47
1:19:07

问题:java.time.Duration 不需要 Android API 级别 26 吗?

java.time 在较旧和较新的 Android 设备上都能很好地工作。它只需要至少Java 6

  • 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
  • 在非 Android Java 6 和 7 中获得 ThreeTen Backport,现代类的后向端口(ThreeTen 用于 JSR 310;请参阅底部的链接)。
  • 在较旧的 Android 上,要么使用脱糖,要么使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。在后一种情况下,请确保您从org.threeten.bp子包中导入日期和时间类。

链接

类似的问题(没有严格的重复,但有很多有用的信息):

其他链接:

于 2021-03-30T17:53:08.590 回答