2015-02-23 11 views
11

Ho una java.time.Duration e voglio emetterlo in formato mm: ss. Sembra che non sia possibile usare DateTimeFormatter poiché accetta solo LocalTime, ZonedTIme ecteraCome formattare un java.time.Duration mm: ss

Quindi l'ho fatto così, funziona per 90 secondi per 1:30, ma per 66 secondi per 1: 6 mentre voglio 1:06

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

risposta

16

Si potrebbe creare un LocalTime che rappresenta la durata dalla mezzanotte (00:00) e utilizzare un DateTimeFormatter:

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

Si noti che questo funziona solo per durate meno di un'ora.

+0

Grazie che funziona –

+0

Se superi le 24 ore, questa soluzione non funzionerà. –

+1

@MenoHochschild in realtà oltre i 59:59 minuti. Concordato. – assylias

8

provare come questo

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

o

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

formattare per una stringa

+0

Grazie, ma l'output in realtà ha bisogno di andare in un file html invece di essere semplicemente inviato a System.out, DateTime non offre una soluzione. –

+0

È possibile formattare su una stringa, vedere aggiornamento –

+0

grazie, funziona ma ho scelto una soluzione all'interno dell'ecosfera datetime –

Problemi correlati