Apache Commons Lang中,下載地址在這,
package的位置在org.apache.commons.lang.time.DurationFormatUtils,
說明文件在這
DurationFormatUtils可以對代表 " 一段持續時間" 的資料做格式化,在DurationFormatUtils中
這個 "一段持續時間" 是用 millis-second 來的儲存的。
我們可以利用DurationFormatUtils來對持續時間用我們提供的自訂格式來格式化,例如181800000毫秒可以用 "dd'天'HH'時'mm'分'ss'秒'" 來表示成 "02天02時30分00秒"
下面就來紀錄一下DurationFormatUtils的使用方法:
import java.time.Duration;
import java.time.Instant;
import org.apache.commons.lang3.time.DurationFormatUtils;
public class DurationFormatUtilsTest {
public static void main(String[] args) {
Instant startInstant = Instant.parse("2015-05-01T00:00:00Z"); //ISO 8601 表示法
Instant endInstant = Instant.parse("2015-05-03T02:30:00Z");
Duration duration = Duration.between(startInstant, endInstant); //得到兩個Instant差的Duration
String resultDurationString1 = DurationFormatUtils.formatDuration(duration.toMillis(), "dd'天'HH'時'mm'分'ss'秒'");
System.out.println(resultDurationString1); //輸出: 02天02時30分00秒
String resultDurationString2 = DurationFormatUtils.formatDuration(duration.toMillis(), "dd'天'HH'時'mm'分'ss'秒'", false);
System.out.println(resultDurationString2); //輸出: 2天2時30分0秒 //(10以下的數字不補0)
String resultDurationString3 = DurationFormatUtils.formatDuration(duration.toMillis(), "HH'時'mm'分'ss'秒'");
System.out.println(resultDurationString3); //輸出: 50時30分00秒 //(沒有設定小時以上的單位,小時以上全部由小時表示:50小時)
String resultDurationString4 = DurationFormatUtils.formatDurationISO(duration.toMillis());
System.out.println(resultDurationString4); //輸出: P0Y0M2DT2H30M0.000S //ISO 8601標準格式
}
}
參考資料:


