Как мне форматировать 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