java.time
String durationString = "01:00:07";
durationString = durationString
.replaceFirst("(\\d{2}):(\\d{2}):(\\d{2})", "PT$1H$2M$3S");
Duration dur = Duration.parse(durationString);
System.out.println(dur);
A Duration
выводит эту нечетную строку:
PT1H7S
Читайте как: aпериод времени 1 час 7 секунд .
Эта строка в стандартном формате ISO 8601 .A Duration
может анализировать только стандартный формат.Поэтому я использую String.replaceFirst
для преобразования вашей строки в нее.
Позвольте мне угадать, вам нужно подвести итог продолжительности?Для этого есть метод plus
:
Duration sum = Duration.ZERO;
sum = sum.plus(dur);
Существуют также методы для преобразования в секунды или миллисекунды.
Не используйте класс даты-времени для длительности.Это приведет к путанице и ошибкам.
Если вы абсолютно не хотите внешних зависимостей (только до тех пор, пока не перейдете на уровень API 26), вручную проанализируйте вашу строку в секундах и представьте их в int
.Оберните его в свой собственный класс.
Вопрос: Можно ли использовать java.time на Android?
Да, java.time прекрасно работает на старых и новых устройствах Android.Для этого требуется как минимум Java 6 .
- В Java 8 и более поздних версиях и на более новых устройствах Android (начиная с уровня API 26) современный API поставляется встроенным.
- В Java 6 и 7 получают ThreeTen Backport, бэкпорт новых классов (ThreeTen для JSR 310; см. Ссылки внизу).
- На (более старых) Android используется версия ThreeTen для AndroidBackport.Это называется ThreeTenABP.И убедитесь, что вы импортируете классы даты и времени из
org.threeten.bp
с подпакетами.
Ссылки