The Youtube V3 API uses ISO8601 time format to describe the duration of videos. Something likes "PT1M13S". And now I want to convert the string to the number of seconds (for example 73 in this case).
Is there any Java library can help me easily do the task under Java 6? Or I have to do the regex task by myself?
Edit
Finally I accept the answer from @Joachim Sauer
The sample code with Joda
is as below.
PeriodFormatter formatter = ISOPeriodFormat.standard();
Period p = formatter.parsePeriod("PT1H1M13S");
Seconds s = p.toStandardSeconds();
System.out.println(s.getSeconds());
Joda Time is the go-to library for time-related functions of any kind.
For this specific case ISOPeriodFormat.standard() returns a PeriodFormatter
that can parse and format that format.
The resulting object is a Period
(JavaDoc). Getting the actual number of seconds would then be period.toStandardSeconds().getSeconds()
, but I suggest you just handle the duration as a Period
object (for ease of handling and for type safety).
Edit: a note from future me: this answer is several years old now. Java 8 brought java.time.Duration
along which can also parse this format and doesn't require an external library.