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標準格式 } }
參考資料: