public interface ReadablePeriod
The implementation of this interface may be mutable or immutable. This interface only gives access to retrieve data, never to change it.
Periods are split up into multiple fields, for example days and seconds. Implementations are not required to evenly distribute the values across the fields. The value for each field may be positive or negative.
When a time period is added to an instant, the effect is to add each field in turn. For example, a time period could be defined as 3 months, 2 days and -1 hours. In most circumstances this would be the same as 3 months, 1 day, and 23 hours. However, when adding across a daylight savings boundary, a day may be 23 or 25 hours long. Thus, the time period is always added field by field to the datetime.
Periods are independent of chronology, and can only be treated as durations when paired with a time via an interval.
ReadableDuration
,
ReadableInterval
Modifier and Type | Method and Description |
---|---|
boolean |
equals(java.lang.Object readablePeriod)
Compares this object with the specified object for equality based
on the value and type of each supported field.
|
int |
get(DurationFieldType field)
Gets the value of one of the fields.
|
DurationFieldType |
getFieldType(int index)
Gets the field type at the specified index.
|
PeriodType |
getPeriodType()
Gets the period type that defines which fields are included in the period.
|
int |
getValue(int index)
Gets the value at the specified index.
|
int |
hashCode()
Gets a hash code for the period that is compatible with the equals method.
|
boolean |
isSupported(DurationFieldType field)
Checks whether the field type specified is supported by this period.
|
int |
size()
Gets the number of fields that this period supports.
|
MutablePeriod |
toMutablePeriod()
Get this object as a
MutablePeriod . |
Period |
toPeriod()
Get this period as an immutable
Period object. |
java.lang.String |
toString()
Gets the value as a String in the style of the ISO8601 duration format.
|
PeriodType getPeriodType()
int size()
DurationFieldType getFieldType(int index)
index
- the index to retrievejava.lang.IndexOutOfBoundsException
- if the index is invalidint getValue(int index)
index
- the index to retrievejava.lang.IndexOutOfBoundsException
- if the index is invalidint get(DurationFieldType field)
If the field type specified is not supported by the period then zero is returned.
field
- the field type to query, null returns zeroboolean isSupported(DurationFieldType field)
field
- the field to check, may be null which returns falsePeriod toPeriod()
Period
object.
This will either typecast this instance, or create a new Period
.
MutablePeriod toMutablePeriod()
MutablePeriod
.
This will always return a new MutablePeriod
with the same fields.
boolean equals(java.lang.Object readablePeriod)
Note that a period of 1 day is not equal to a period of 24 hours, nor is 1 hour equal to 60 minutes. Only periods with the same amount in each field are equal.
This is because periods represent an abstracted definition of a time period (eg. a day may not actually be 24 hours, it might be 23 or 25 at daylight savings boundary).
To compare the actual duration of two periods, convert both to
Duration
s, an operation that emphasises that the result may
differ according to the date you choose.
equals
in class java.lang.Object
readablePeriod
- a readable period to check againstint hashCode()
int total = 17; for (int i = 0; i < fields.length; i++) { total = 27 * total + getValue(i); total = 27 * total + getFieldType(i).hashCode(); } return total;
hashCode
in class java.lang.Object
java.lang.String toString()
For example, "PT6H3M5S" represents 6 hours, 3 minutes, 5 seconds.
toString
in class java.lang.Object
"Copyright © 2010 - 2020 Adobe Systems Incorporated. All Rights Reserved"