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

How do i format a 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());

这样试试

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

格式化为字符串

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

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

请注意,这仅适用于少于一小时的持续时间。