"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
}
}
沒有留言 :
張貼留言