Как мне форматировать java.time.Duration mm: ss

У меня есть java.time.Duration, и я хочу вывести его в виде mm: ss. Невозможно использовать DateTimeFormatter, поскольку он принимает только LocalTime, ZonedTIme ectera

Итак, я сделал это так, отлично работает в течение 90 секунд, дает 1:30, но на 66 секунд дает 1: 6, тогда как я хочу 1:06

Duration duration = Duration.ofSeconds(track.getLength().longValue());
System.out.println(duration.toMinutes() + ":" + duration.minusMinutes(duration.toMinutes()).getSeconds());

Ответ 1

Вы можете создать LocalTime, представляющий продолжительность с полуночи (00:00), и использовать DateTimeFormatter:

LocalTime t = LocalTime.MIDNIGHT.plus(duration);
String s = DateTimeFormatter.ofPattern("m:ss").format(t);

Обратите внимание, что это будет работать только при длительности менее одного часа.

Ответ 2

попробуйте это

System.out.printf("%d:%02d%n", duration.toMinutes(), duration.minusMinutes(duration.toMinutes()).getSeconds());

или

    String s = String.format("%d:%02d%n", duration.toMinutes(), duration.minusMinutes(duration.toMinutes()).getSeconds());

для форматирования строки String