2015-02-23 62 views
11

我有一個java.time.Duration,我想以mm:ss的形式輸出它。它似乎不可能使用DateTimeFormatter,因爲它只接受LocalTime,ZonedTIme ectera我如何格式java.time.Duration毫米:ss

所以我這樣做,工作正常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()); 

回答

16

你可以創建代表從午夜(00:00)的持續時間LocalTime和使用DateTimeFormatter

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

注意,這將只持續不到一小時的工作。

+0

Thankyou工作 – 2015-02-23 14:30:25

+0

如果超過24小時,則此解決方案將失敗。 – 2015-02-23 16:46:52

+1

@MenoHochschild實際上超過59:59分鐘。同意。 – assylias 2015-02-23 16:54:09

8

嘗試這樣

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

格式化爲字符串

+0

謝謝,但輸出實際上需要進入一個html文件,而不是隻輸出到System.out,沒有Datetime提供一個解決方案。 – 2015-02-23 13:55:01

+0

您可以格式化爲字符串,請參閱更新 – 2015-02-23 13:58:04

+0

謝謝,多數民衆贊成在工作,但我已經在日期時間生態圈內解決方案 – 2015-02-23 14:30:51

相關問題