The Period
class in java.time handles only the date-oriented potion: years, months, days.
What about the time portion: hours, minutes, seconds?
How can we parse and generate string representations of full periods as defined in ISO 8601, PnYnMnDTnHnMnS
? For example, a day and a half: P1DT12H
. The academic year is nine months, P9M
. Every year I get two weeks and 3 days of vacation, P17D
. The customer occupied the hotel room for 2 days and seventeen and a half hours, P2DT17H30M
.
The Period
class in Joda-Time handles full period. Why not in java.time? Is there some other mechanism?
org.threeten.extra.PeriodDuration
The ThreeTen-Extra project offers a class combining a Period
and a Duration
. Simply called PeriodDuration
.
An amount of time in the ISO-8601 calendar system that combines a period and a duration.
This class models a quantity or amount of time in terms of a Period and Duration. A period is a date-based amount of time, consisting of years, months and days. A duration is a time-based amount of time, consisting of seconds and nanoseconds. See the Period and Duration classes for more details.
The days in a period take account of daylight saving changes (23 or 25 hour days). When performing calculations, the period is added first, then the duration.
Caveat: Be sure to read the Answer by JodaStephen to understand the issues involved in trying to combine Period
and Duration
. It rarely makes sense to do so in practice, though that is counter to our intuition.
FYI, ThreeTen-Extra, java.time in JSR 310, and Joda-Time are all led by the same man, Stephen Colebourne a.k.a. JodaStephen.