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 beperiod.toStandardSeconds().getSeconds()
, but I suggest you just handle the duration as aPeriod
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.May be this would help some one who don't want any library but a simple function,
This is the function,
I may be late for the party, it's actually very simple. Although there may be better ways of doing this. duration is in milliseconds.
I have written and used this method to get the actual duration. Hope this helps.
Using this website:
I've implemented this method and it has worked so far.