tl;dr
Duration.parse( "PT2H30M" )
ИСО 8601
Если вы хотите переопределить желаемые форматы ввода, я предлагаю использовать уже существующие форматы, определенные ISO 8601. стандарт.
Шаблон PnYnMnDTnHnMnS
использует P
для обозначения начала, T
для отделения любой части лет-месяцев-дней от любой части часов-минут-секунд.
Например, полтора часа — это PT1H30M
.
Java.время
Классы java.time по умолчанию используют форматы ISO 8601 при разборе/генерации строк. Это включает в себя Period
и Duration
для представления промежутков времени, не привязанных к Лента новостей.
Duration d = Duration.ofHours( 1 ).plusMinutes( 30 );
String output = d.toString();
Идем в другом направлении, анализируя строку.
Duration d = Duration.parse( "PT1H30M" );
См. действующий код на сайте IdeOne.com.
См. мой аналогичный ответ на аналогичный вопрос.
О java.time
Платформа java.time встроен в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и SimpleDateFormat
.
Проект Joda-Time, теперь в режим обслуживания, советует перейти на java.time.
Чтобы узнать больше, см. учебник по Oracle. И поищите множество примеров и пояснений в Stack Overflow. Спецификация: JSR 310.
Где получить классы java.time?
- Java SE 8 and SE 9 and later
- Built-in.
- Часть стандартного Java API со встроенной реализацией.
- Java 9 добавляет некоторые незначительные функции и исправления.
- Java SE 6 and SE 7
- Much of the java.time functionality is back-ported to Java 6 & 7 in ThreeTen-Backport.
- Android
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является испытательным полигоном для возможных дополнений к java.time в будущем. Здесь вы можете найти несколько полезных классов, таких как Interval
a>, YearWeek
, YearQuarter
и подробнее.
person
Basil Bourque
schedule
30.12.2016