Преобразование текущего времени mediaPlayer в форматированное время в Android Studio с помощью java

проверьте мою функцию ниже, она показывает вот так 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;

        }

person Aamir Mehmood Lucky    schedule 30.03.2021    source источник
comment
Может быть, вы можете собрать решение из следующих существующих вопросов? (1) Преобразовать количество секунд в ЧЧ:ММ ( без секунд) в Java (2) Как можно Я «красиво печатаю» продолжительность в Java? (3) Как отформатировать java.time.Duration мм:сс. Ищите еще.   -  person Ole V.V.    schedule 30.03.2021
comment
И в следующий раз поищите, прежде чем опубликовать свой вопрос, пожалуйста. Вам легче, и нам легче.   -  person Ole V.V.    schedule 30.03.2021
comment
Наконец-то эта функция у меня работает 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; }   -  person Aamir Mehmood Lucky    schedule 04.04.2021
comment
Спасибо за публикацию вашего метода. На мой вкус слишком много "ручной работы".   -  person Ole V.V.    schedule 04.04.2021


Ответы (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 %, что дешугаринг справится с этим, но я бы, конечно, осмелился на это надеяться. Методы toMinutesPart и toSecondsPart появились в 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 с подпакетами.

Ссылки

Похожие вопросы (без строгих дубликатов, но много полезной информации):

Другие ссылки:

person Ole V.V.    schedule 30.03.2021
comment
эта работа для меня 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; } - person Aamir Mehmood Lucky; 04.04.2021
comment
здесь плохо видно, потому что я не знаю, как правильно комментировать здесь, но эта функция работает 100% работает отлично на самом деле я показывал текущее время медиаплеера в текстовом представлении, это время в миллисекундах и эта функция преобразует миллисекунды в часы:минуты:секунды, если час не существует, тогда она будет показывать только минуты и секунды, НЕОБХОДИМО ПОПРОБОВАТЬ ЭТУ ФУНКЦИЮ - person Aamir Mehmood Lucky; 04.04.2021
comment
Здесь, в Stack Overflow, нет возможности форматировать код в комментариях. Я вставил ваш метод в свою IDE, и он отформатировал его для меня (не ожидайте, что другие читатели сделают то же самое). - person Ole V.V.; 04.04.2021