【问题标题】:Convert current mediaPlayer time to formated time in Android Studio using java使用java将当前媒体播放器时间转换为Android Studio中的格式化时间
【发布时间】:2021-03-30 09:12:17
【问题描述】:

检查下面的函数,它的显示如下 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;

        }

【问题讨论】:

  • 也许您可以从以下现有问题中拼凑出一个解决方案? (1)Convert number of seconds into HH:MM (without seconds) in Java(2)How can I “pretty print” a Duration in Java?(3)How do i format a java.time.Duration mm:ss。搜索更多。
  • 下次在您发布问题之前请搜索。这对您来说更容易,对我们来说也更容易。
  • 这个功能终于为我工作了 public String formatedTime(int ms){ String tim = ""; String secStrng = ""; String minStrng=""; int s = (int) (ms % 60); int m = (int)(ms / 60) % 60; int h = (int)(( ms / (60 * 60)) % 24 ); if(h > 0){ tim = h + ":"; } if(s < 10){ secStrng = "0" + s; }else{ secStrng = "" + s; } if (m < 10){ minStrng = "0" + m; }else { minStrng = "" + m; } tim = tim + minStrng + ":" + secStrng; return tim; }
  • 感谢您发布您的方法。对我来说,这太“手工”了。

标签: datetime time android-mediaplayer time-format current-time


【解决方案1】:

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% 确定脱糖可以解决这个问题,但我当然敢这样希望。 toMinutesParttoSecondsPart 方法是在 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,这是现代类的后向端口(对于 JSR 310,ThreeTen;请参阅底部的链接)。
  • 在较旧的 Android 上,请使用脱糖或 Android 版本的 ThreeTen Backport。它被称为 ThreeTenABP。在后一种情况下,请确保从 org.threeten.bp 导入日期和时间类以及子包。

链接

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

其他链接:

【讨论】:

  • 我的作品 public String formatedTime(int ms){ String tim = ""; String secStrng = ""; String minStrng=""; int s = (int) (ms % 60); int m = (int)(ms / 60) % 60; int h = (int)(( ms / (60 * 60)) % 24 ); if(h > 0){ tim = h + ":"; } if(s < 10){ secStrng = "0" + s; }else{ secStrng = "" + s; } if (m < 10){ minStrng = "0" + m; }else { minStrng = "" + m; } tim = tim + minStrng + ":" + secStrng; return tim; }
  • 它在这里显示不好,因为我不知道如何在这里正确评论,但是这个功能工作100%工作完美实际上我是显示媒体播放器当前textview 中的时间,该时间以毫秒为单位,此函数将毫秒转换为小时:分钟:秒,如果小时不存在,则它将仅显示分钟和秒,必须尝试此功能
  • Stack Overflow 上没有办法在 cmets 中格式化代码。我已将您的方法粘贴到我的 IDE 中,并且它已为我格式化(不要指望其他读者也这样做)。
猜你喜欢
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2016-11-17
  • 1970-01-01
  • 2015-09-26
  • 1970-01-01
相关资源
最近更新 更多