A Period in Java 8 contains only year / month / day components. A Duration has components hour / minute / second. It seems that you will need to parse the string manually. One of the options may look like the code below (you need to add confirmation of input, etc.) - there may be better alternatives.
public static void main(String[] args) { System.out.println(PeriodAndDuration.parse("P2W5DT11H8M")); } public static class PeriodAndDuration { private final Period p; private final Duration d; public PeriodAndDuration(Period p, Duration d) { this.p = p; this.d = d; } public Period getPeriod() { return p; } public Duration getDuration() { return d; } public static PeriodAndDuration parse(String input) { int periodStart = input.indexOf("P"); int timeStart = input.indexOf("T"); Period p = Period.parse(input.substring(periodStart, timeStart)); Duration d = Duration.parse("P" + input.substring(timeStart, input.length())); return new PeriodAndDuration(p, d); } @Override public String toString() { return p.toString() + d.toString(); } }
source share