"P3Y6M4DT12H30M5S" 就表示 "3年6個月4天12小時又30分5秒",
像Youtube A{I回傳的影片長度就是用這個標準的字串來表示,
在Java中,除了自己想辨法解析外,也可以使用以下的方法:
- 在Java 1.8之後,只要使用java.time.Duration這個Class就可以輕易地解析由ISO 8601 Duration表示的持續時間,範例程式如下:
- 而在Java 1.8之前,因為沒有java.time.Duration,所以可以借助第三方的Class,在這邊介紹一個很好用的第三方JAR,joda-time,到官網下載引用後,就可以使用它的Period, PeriodFormatter, ISOPeriodFormater等Class來幫助我們解析ISO 8601 Duration,範例程式如下:
import java.time.Duration; import java.text.NumberFormat; import java.text.DecimalFormat; public class HelloWorld { public static void main(String[] args) { Duration duration = Duration.parse("PT58S"); NumberFormat formatter = new DecimalFormat("00"); String hours = formatter.format(duration.toHours()); String minutes = formatter.format(duration.toMinutes()); String seconds = formatter.format(duration.getSeconds()); System.out.print(hours + ":" + minutes + ":" + seconds); //00:00:58 } }
import java.text.DecimalFormat; import java.text.NumberFormat; import org.joda.time.Period; import org.joda.time.format.ISOPeriodFormat; import org.joda.time.format.PeriodFormatter; public class DurationTest { public DurationTest() { // TODO Auto-generated constructor stub } public static void main(String[] args) { PeriodFormatter periodformatter = ISOPeriodFormat.standard(); Period p = periodformatter.parsePeriod("PT58S"); NumberFormat numberformatter = new DecimalFormat("00"); String hours = numberformatter.format(p.getHours()); String minutes = numberformatter.format(p.getMinutes()); String seconds = numberformatter.format(p.getSeconds()); System.out.println(hours + ":" + minutes + ":" + seconds); //00:00:58 } }
沒有留言 :
張貼留言