2015-02-23 9 views
11

Ich habe eine java.time.Duration und ich möchte es in der Form von mm: ss ausgeben. Es scheint nicht möglich, DateTimeFormatter zu verwenden, da dies nur LocalTime, ZonedTIme etera akzeptiertWie formatiere ich eine java.time.Duration mm: ss

Also habe ich es so, funktioniert gut für 90 Sekunden geben 1:30, aber 66 Sekunden gibt 1: 6, während ich will 1:06

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

Antwort

16

Sie könnten eine LocalTime die Dauer von Mitternacht darstellt (00:00) erstellt und eine DateTimeFormatter verwenden:

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

Beachten Sie, dass dies nur für eine Dauer von weniger als einer Stunde arbeiten.

+0

Danke, dass funktioniert –

+0

Wenn Sie mehr als 24 Stunden gehen, wird diese Lösung fehlschlagen. –

+1

@MenoHochschild eigentlich über 59:59 Minuten hinaus. Einverstanden. – assylias

8

versuchen, wie diese

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

oder

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

in einen String zu formatieren

+0

Danke, aber die Ausgabe muss tatsächlich in eine HTML-Datei gehen, anstatt nur an System.out ausgegeben zu werden, bietet DateTime keine Lösung. –

+0

Sie können auf eine Zeichenfolge formatieren, siehe Update –

+0

Danke, das funktioniert, aber ich bin für eine Lösung innerhalb der Datetime Ecosphere –

Verwandte Themen