Мне нужно разобрать строку длительности вида 98d 01h 23m 45s
в миллисекунды.
Я надеялся, что существует эквивалент SimpleDateFormat
для такой длительности, но ничего не нашел.Кто-нибудь порекомендует за или против использования SDF для этой цели?
Мой текущий план состоит в том, чтобы использовать регулярное выражение для сопоставления с числами и сделать что-то вроде
Pattern p = Pattern.compile("(\\d+)");
Matcher m = p.matcher("98d 01h 23m 45s");
if (m.find()) {
int days = Integer.parseInt(m.group());
}
// etc. for hours, minutes, seconds
, а затем использовать TimeUnit, чтобы собрать все вместе и преобразовать в миллисекунды.
Я думаю, мой вопрос в том, что это кажется излишеством, можно ли это сделать проще? Возникло много вопросов о датах и временных метках, но, может быть, это немного другое.