如何格式化java.time.Duration mm:ss

2022-09-04 07:23:07

我有一个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

您可以创建一个表示从午夜 (00:00) 开始的持续时间,并使用 :LocalTimeDateTimeFormatter

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());

将格式设置为字符串


推荐