I need to parse a duration string, of the form 98d 01h 23m 45s into milliseconds.
I was hoping there was an equivalent of SimpleDateFormat
Check out PeriodFormatter and PeriodParser from JodaTime library.
You can also use PeriodFormatterBuilder to build a parser for your strings like this
String periodString = "98d 01h 23m 45s";
PeriodParser parser = new PeriodFormatterBuilder()
.appendDays().appendSuffix("d ")
.appendHours().appendSuffix("h ")
.appendMinutes().appendSuffix("m ")
.appendSeconds().appendSuffix("s ")
.toParser();
MutablePeriod period = new MutablePeriod();
parser.parseInto(period, periodString, 0, Locale.getDefault());
long millis = period.toDurationFrom(new DateTime(0)).getMillis();
Now, all this (especially the toDurationFrom(...) part) may look tricky, but I really advice you to look into JodaTime if you're dealing with periods and durations in Java.
Also look at this answer about obtaining milliseconds from JodaTime period for additional clarification.