Я построил простое решение, используя Duration.toString()
в Java 8 и немного регулярных выражений:
public static String humanReadableFormat(Duration duration) {
return duration.toString()
.substring(2)
.replaceAll("(\\d[HMS])(?!$)", "$1 ")
.toLowerCase();
}
Результат будет выглядеть следующим образом:
- 5h
- 7h 15m
- 6h 50m 15s
- 2h 5s
- 0.1s
Если вы нене хочу пробелов между ними, просто удалите replaceAll
.