This provides additional fields and units not in the JDK.
| Modifier and Type | Class and Description |
|---|---|
| private static enum | TemporalFields.
Implementation of day-of-half. |
| private static enum | TemporalFields.
Implementation of half-of-year. |
| private static enum | TemporalFields.
Implementation of the half-year unit. |
| Modifier and Type | Field and Description |
|---|---|
| public static final TemporalField | DAY_OF_HALF
The field that represents the day-of-half. |
| public static final TemporalField | HALF_OF_YEAR
The field that represents the half-of-year. |
| public static final TemporalUnit | HALF_YEARS
Unit that represents the concept of a half-year. |
| Access | Constructor and Description |
|---|---|
| private |
| DAY_OF_HALF | back to summary |
|---|---|
| public static final TemporalField DAY_OF_HALF The field that represents the day-of-half. This field allows the day-of-half value to be queried and set. The day-of-half has values from 1 to 181 in H1 of a standard year, from 1 to 182 in H1 of a leap year and from 1 to 184 in H2. The day-of-half can only be calculated if the day-of-year, month-of-year and year are available. When setting this field, the value is allowed to be partially lenient, taking any value from 1 to 184. If the half has less than 184 days, then the day will end up in the following half-year. In the resolving phase of parsing, a date can be created from a year, half-of-year and day-of-half. In strict mode, all three fields are validated against their range of valid values. The day-of-half field is validated from 1 to 181, 182 or 184 depending on the year and half. In smart mode, all three fields are validated against their range of valid values. The day-of-half field is validated between 1 and 184, ignoring the actual range based on the year and half. If the day-of-half exceeds the actual range, then the resulting date is in the next half-year. In lenient mode, only the year is validated against the range of valid values. The resulting date is calculated equivalent to the following three stage approach. First, create a date on the first of January in the requested year. Then take the half-of-year, subtract one, and add the amount in halves to the date. Finally, take the day-of-half, subtract one, and add the amount in days to the date. This unit is an immutable and thread-safe singleton. | |
| HALF_OF_YEAR | back to summary |
|---|---|
| public static final TemporalField HALF_OF_YEAR The field that represents the half-of-year. This field allows the half-of-year value to be queried and set. The half-of-year has values from 1 to 2. The half-of-year can only be calculated if the month-of-year is available.
In the resolving phase of parsing, a date can be created from a year,
half-of-year and day-of-half.
See This unit is an immutable and thread-safe singleton. | |
| HALF_YEARS | back to summary |
|---|---|
| public static final TemporalUnit HALF_YEARS Unit that represents the concept of a half-year.
For the ISO calendar system, it is equal to 6 months.
The estimated duration of a half-year is one half of This unit is an immutable and thread-safe singleton. | |
| TemporalFields | back to summary |
|---|---|
| private TemporalFields() Restricted constructor. | |
| Modifier and Type | Field and Description |
|---|---|
| public static final TemporalFields. | |
| private static final ValueRange | |
| private static final long |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public <R extends Temporal> R | adjustInto(R
the temporal object to adjust, not null temporal, long the new value of the field newValue)Implements java. Returns a copy of the specified temporal object with the value of this field set. |
| public TemporalUnit | getBaseUnit()
Implements java. Gets the unit that the field is measured in. The unit of the field is the period that varies within the range. |
| public long | getFrom(TemporalAccessor
the temporal object to query, not null temporal)Implements java. Gets the value of this field from the specified temporal object. |
| public TemporalUnit | getRangeUnit()
Implements java. Gets the range that the field is bound by. |
| public boolean | isDateBased()
Implements java. Checks if this field represents a component of a date. |
| public boolean | isSupportedBy(TemporalAccessor
the temporal object to query, not null temporal)Implements java. Checks if this field is supported by the temporal object. |
| public boolean | isTimeBased()
Implements java. Checks if this field represents a component of a time. |
| public ValueRange | range()
Implements java. Gets the range of valid values for the field. |
| public ValueRange | rangeRefinedBy(TemporalAccessor
the temporal object used to refine the result, not null temporal)Implements java. Get the range of valid values for this field using the temporal object to refine the result. |
| public ChronoLocalDate | resolve(Map<TemporalField, Long>
the map of fields to values, which can be updated, not null fieldValues, TemporalAccessor the partially complete temporal to query for zone and
chronology; querying for other things is undefined and not recommended, not null partialTemporal, ResolverStyle the requested type of resolve, not null resolverStyle)Overrides default java. Resolves this field to provide a simpler alternative or a date. |
| public String | toString()
Overrides java. Implements java. Gets a descriptive name for the field. |
| public static TemporalFields. | |
| public static TemporalFields. |
| INSTANCE | back to summary |
|---|---|
| public static final TemporalFields. | |
| RANGE | back to summary |
|---|---|
| private static final ValueRange RANGE | |
| serialVersionUID | back to summary |
|---|---|
| private static final long serialVersionUID | |
| DayOfHalfField | back to summary |
|---|---|
| private DayOfHalfField() | |
| adjustInto | back to summary |
|---|---|
| public <R extends Temporal> R adjustInto(R temporal, long newValue) Implements java. Doc from java. Returns a copy of the specified temporal object with the value of this field set.
This returns a new temporal object based on the specified one with the value for
this field changed. For example, on a In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then changing the month to February would be unclear. In cases like this, the implementation is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisField.adjustInto(temporal); temporal = temporal.with(thisField);It is recommended to use the second approach, with(TemporalField),
as it is a lot clearer to read in code.
Implementations should perform any queries or calculations using the fields
available in Implementations must not alter the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.
| |
| getBaseUnit | back to summary |
|---|---|
| public TemporalUnit getBaseUnit() Implements java. Doc from java. Gets the unit that the field is measured in.
The unit of the field is the period that varies within the range.
For example, in the field 'MonthOfYear', the unit is 'Months'.
See also
| |
| getFrom | back to summary |
|---|---|
| public long getFrom(TemporalAccessor temporal) Implements java. Doc from java. Gets the value of this field from the specified temporal object. This queries the temporal object for the value of this field.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisField.getFrom(temporal); temporal = temporal.getLong(thisField);It is recommended to use the second approach, getLong(TemporalField),
as it is a lot clearer to read in code.
Implementations should perform any queries or calculations using the fields
available in
| |
| getRangeUnit | back to summary |
|---|---|
| public TemporalUnit getRangeUnit() Implements java. Doc from java. Gets the range that the field is bound by.
The range of the field is the period that the field varies within.
For example, in the field 'MonthOfYear', the range is 'Years'.
See also The range is never null. For example, the 'Year' field is shorthand for 'YearOfForever'. It therefore has a unit of 'Years' and a range of 'Forever'.
| |
| isDateBased | back to summary |
|---|---|
| public boolean isDateBased() Implements java. Doc from java. Checks if this field represents a component of a date.
A field is date-based if it can be derived from
| |
| isSupportedBy | back to summary |
|---|---|
| public boolean isSupportedBy(TemporalAccessor temporal) Implements java. Doc from java. Checks if this field is supported by the temporal object. This determines whether the temporal accessor supports this field. If this returns false, then the temporal cannot be queried for this field.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisField.isSupportedBy(temporal); temporal = temporal.isSupported(thisField);It is recommended to use the second approach, isSupported(TemporalField),
as it is a lot clearer to read in code.
Implementations should determine whether they are supported using the fields
available in
| |
| isTimeBased | back to summary |
|---|---|
| public boolean isTimeBased() Implements java. Doc from java. Checks if this field represents a component of a time.
A field is time-based if it can be derived from
| |
| range | back to summary |
|---|---|
| public ValueRange range() Implements java. Doc from java. Gets the range of valid values for the field.
All fields can be expressed as a Note that the result only describes the minimum and maximum valid values and it is important not to read too much into them. For example, there could be values within the range that are invalid for the field.
| |
| rangeRefinedBy | back to summary |
|---|---|
| public ValueRange rangeRefinedBy(TemporalAccessor temporal) Implements java. Doc from java. Get the range of valid values for this field using the temporal object to refine the result.
This uses the temporal object to find the range of valid values for the field.
This is similar to
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisField.rangeRefinedBy(temporal); temporal = temporal.range(thisField);It is recommended to use the second approach, range(TemporalField),
as it is a lot clearer to read in code.
Implementations should perform any queries or calculations using the fields
available in
| |
| resolve | back to summary |
|---|---|
| public ChronoLocalDate resolve(Map<TemporalField, Long> fieldValues, TemporalAccessor partialTemporal, ResolverStyle resolverStyle) Overrides default java. Doc from java. Resolves this field to provide a simpler alternative or a date.
This method is invoked during the resolve phase of parsing.
It is designed to allow application defined fields to be simplified into
more standard fields, such as those on Applications should not normally invoke this method directly.
| |
| toString | back to summary |
|---|---|
| public String toString() Overrides java. Implements java. Doc from java. Gets a descriptive name for the field.
The should be of the format 'BaseOfRange', such as 'MonthOfYear',
unless the field has a range of | |
| valueOf | back to summary |
|---|---|
| public static TemporalFields. | |
| values | back to summary |
|---|---|
| public static TemporalFields. | |
| Modifier and Type | Field and Description |
|---|---|
| public static final TemporalFields. | |
| private static final long |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public <R extends Temporal> R | adjustInto(R
the temporal object to adjust, not null temporal, long the new value of the field newValue)Implements java. Returns a copy of the specified temporal object with the value of this field set. |
| public TemporalUnit | getBaseUnit()
Implements java. Gets the unit that the field is measured in. The unit of the field is the period that varies within the range. |
| public long | getFrom(TemporalAccessor
the temporal object to query, not null temporal)Implements java. Gets the value of this field from the specified temporal object. |
| public TemporalUnit | getRangeUnit()
Implements java. Gets the range that the field is bound by. |
| public boolean | isDateBased()
Implements java. Checks if this field represents a component of a date. |
| public boolean | isSupportedBy(TemporalAccessor
the temporal object to query, not null temporal)Implements java. Checks if this field is supported by the temporal object. |
| public boolean | isTimeBased()
Implements java. Checks if this field represents a component of a time. |
| public ValueRange | range()
Implements java. Gets the range of valid values for the field. |
| public ValueRange | rangeRefinedBy(TemporalAccessor
the temporal object used to refine the result, not null temporal)Implements java. Get the range of valid values for this field using the temporal object to refine the result. |
| public String | toString()
Overrides java. Implements java. Gets a descriptive name for the field. |
| public static TemporalFields. | |
| public static TemporalFields. |
| INSTANCE | back to summary |
|---|---|
| public static final TemporalFields. | |
| serialVersionUID | back to summary |
|---|---|
| private static final long serialVersionUID | |
| HalfOfYearField | back to summary |
|---|---|
| private HalfOfYearField() | |
| adjustInto | back to summary |
|---|---|
| public <R extends Temporal> R adjustInto(R temporal, long newValue) Implements java. Doc from java. Returns a copy of the specified temporal object with the value of this field set.
This returns a new temporal object based on the specified one with the value for
this field changed. For example, on a In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then changing the month to February would be unclear. In cases like this, the implementation is responsible for resolving the result. Typically it will choose the previous valid date, which would be the last valid day of February in this example.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisField.adjustInto(temporal); temporal = temporal.with(thisField);It is recommended to use the second approach, with(TemporalField),
as it is a lot clearer to read in code.
Implementations should perform any queries or calculations using the fields
available in Implementations must not alter the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.
| |
| getBaseUnit | back to summary |
|---|---|
| public TemporalUnit getBaseUnit() Implements java. Doc from java. Gets the unit that the field is measured in.
The unit of the field is the period that varies within the range.
For example, in the field 'MonthOfYear', the unit is 'Months'.
See also
| |
| getFrom | back to summary |
|---|---|
| public long getFrom(TemporalAccessor temporal) Implements java. Doc from java. Gets the value of this field from the specified temporal object. This queries the temporal object for the value of this field.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisField.getFrom(temporal); temporal = temporal.getLong(thisField);It is recommended to use the second approach, getLong(TemporalField),
as it is a lot clearer to read in code.
Implementations should perform any queries or calculations using the fields
available in
| |
| getRangeUnit | back to summary |
|---|---|
| public TemporalUnit getRangeUnit() Implements java. Doc from java. Gets the range that the field is bound by.
The range of the field is the period that the field varies within.
For example, in the field 'MonthOfYear', the range is 'Years'.
See also The range is never null. For example, the 'Year' field is shorthand for 'YearOfForever'. It therefore has a unit of 'Years' and a range of 'Forever'.
| |
| isDateBased | back to summary |
|---|---|
| public boolean isDateBased() Implements java. Doc from java. Checks if this field represents a component of a date.
A field is date-based if it can be derived from
| |
| isSupportedBy | back to summary |
|---|---|
| public boolean isSupportedBy(TemporalAccessor temporal) Implements java. Doc from java. Checks if this field is supported by the temporal object. This determines whether the temporal accessor supports this field. If this returns false, then the temporal cannot be queried for this field.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisField.isSupportedBy(temporal); temporal = temporal.isSupported(thisField);It is recommended to use the second approach, isSupported(TemporalField),
as it is a lot clearer to read in code.
Implementations should determine whether they are supported using the fields
available in
| |
| isTimeBased | back to summary |
|---|---|
| public boolean isTimeBased() Implements java. Doc from java. Checks if this field represents a component of a time.
A field is time-based if it can be derived from
| |
| range | back to summary |
|---|---|
| public ValueRange range() Implements java. Doc from java. Gets the range of valid values for the field.
All fields can be expressed as a Note that the result only describes the minimum and maximum valid values and it is important not to read too much into them. For example, there could be values within the range that are invalid for the field.
| |
| rangeRefinedBy | back to summary |
|---|---|
| public ValueRange rangeRefinedBy(TemporalAccessor temporal) Implements java. Doc from java. Get the range of valid values for this field using the temporal object to refine the result.
This uses the temporal object to find the range of valid values for the field.
This is similar to
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisField.rangeRefinedBy(temporal); temporal = temporal.range(thisField);It is recommended to use the second approach, range(TemporalField),
as it is a lot clearer to read in code.
Implementations should perform any queries or calculations using the fields
available in
| |
| toString | back to summary |
|---|---|
| public String toString() Overrides java. Implements java. Doc from java. Gets a descriptive name for the field.
The should be of the format 'BaseOfRange', such as 'MonthOfYear',
unless the field has a range of | |
| valueOf | back to summary |
|---|---|
| public static TemporalFields. | |
| values | back to summary |
|---|---|
| public static TemporalFields. | |
| Modifier and Type | Field and Description |
|---|---|
| public static final TemporalFields. | INSTANCE
Unit that represents the concept of a week-based-year. |
| Access | Constructor and Description |
|---|---|
| private |
| Modifier and Type | Method and Description |
|---|---|
| public <R extends Temporal> R | addTo(R
the temporal object to adjust, not null temporal, long the amount of this unit to add, positive or negative amount)Implements java. Returns a copy of the specified temporal object with the specified period added. |
| public long | between(Temporal
the base temporal object, not null temporal1Inclusive, Temporal the other temporal object, exclusive, not null temporal2Exclusive)Implements java. Calculates the amount of time between two temporal objects. |
| public Duration | getDuration()
Implements java. Gets the duration of this unit, which may be an estimate. |
| public boolean | isDateBased()
Implements java. Checks if this unit represents a component of a date. |
| public boolean | isDurationEstimated()
Implements java. Checks if the duration of the unit is an estimate. |
| public boolean | isSupportedBy(Temporal
the temporal object to check, not null temporal)Overrides default java. Checks if this unit is supported by the specified temporal object. |
| public boolean | isTimeBased()
Implements java. Checks if this unit represents a component of a time. |
| public String | toString()
Overrides java. Implements java. Gets a descriptive name for the unit. |
| public static TemporalFields. | |
| public static TemporalFields. |
| INSTANCE | back to summary |
|---|---|
| public static final TemporalFields. Unit that represents the concept of a week-based-year. | |
| HalfUnit | back to summary |
|---|---|
| private HalfUnit() | |
| addTo | back to summary |
|---|---|
| public <R extends Temporal> R addTo(R temporal, long amount) Implements java. Doc from java. Returns a copy of the specified temporal object with the specified period added. The period added is a multiple of this unit. For example, this method could be used to add "3 days" to a date by calling this method on the instance representing "days", passing the date and the period "3". The period to be added may be negative, which is equivalent to subtraction.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent, but the second approach is recommended temporal = thisUnit.addTo(temporal); temporal = temporal.plus(thisUnit);It is recommended to use the second approach, plus(TemporalUnit),
as it is a lot clearer to read in code.
Implementations should perform any queries or calculations using the units
available in Implementations must not alter the specified temporal object. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable implementations.
| |
| between | back to summary |
|---|---|
| public long between(Temporal temporal1Inclusive, Temporal temporal2Exclusive) Implements java. Doc from java. Calculates the amount of time between two temporal objects.
This calculates the amount in terms of this unit. The start and end
points are supplied as temporal objects and must be of compatible types.
The implementation will convert the second type to be an instance of the
first type before the calculating the amount.
The result will be negative if the end is before the start.
For example, the amount in hours between two temporal objects can be
calculated using The calculation returns a whole number, representing the number of complete units between the two temporals. For example, the amount in hours between the times 11:30 and 13:29 will only be one hour as it is one minute short of two hours.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use // these two lines are equivalent between = thisUnit.between(start, end); between = start.until(end, thisUnit);The choice should be made based on which makes the code more readable. For example, this method allows the number of days between two dates to be calculated: long daysBetween = DAYS.between(start, end); // or alternatively long daysBetween = start.until(end, DAYS);
Implementations should perform any queries or calculations using the units
available in
| |
| getDuration | back to summary |
|---|---|
| public Duration getDuration() Implements java. Doc from java. Gets the duration of this unit, which may be an estimate.
All units return a duration measured in standard nanoseconds from this method.
The duration will be positive and non-zero.
For example, an hour has a duration of
Some units may return an accurate duration while others return an estimate.
For example, days have an estimated duration due to the possibility of
daylight saving time changes.
To determine if the duration is an estimate, use | |
| isDateBased | back to summary |
|---|---|
| public boolean isDateBased() Implements java. Doc from java. Checks if this unit represents a component of a date.
A date is time-based if it can be used to imply meaning from a date.
It must have a duration that is an integral
multiple of the length of a standard day.
Note that it is valid for both
| |
| isDurationEstimated | back to summary |
|---|---|
| public boolean isDurationEstimated() Implements java. Doc from java. Checks if the duration of the unit is an estimate. All units have a duration, however the duration is not always accurate. For example, days have an estimated duration due to the possibility of daylight saving time changes. This method returns true if the duration is an estimate and false if it is accurate. Note that accurate/estimated ignores leap seconds.
| |
| isSupportedBy | back to summary |
|---|---|
| public boolean isSupportedBy(Temporal temporal) Overrides default java. Doc from java. Checks if this unit is supported by the specified temporal object. This checks that the implementing date-time can add/subtract this unit. This can be used to avoid throwing an exception.
This default implementation derives the value using
| |
| isTimeBased | back to summary |
|---|---|
| public boolean isTimeBased() Implements java. Doc from java. Checks if this unit represents a component of a time.
A unit is time-based if it can be used to imply meaning from a time.
It must have a duration that divides into
the length of a standard day without remainder.
Note that it is valid for both
| |
| toString | back to summary |
|---|---|
| public String toString() Overrides java. Implements java. Doc from java. Gets a descriptive name for the unit. This should be in the plural and upper-first camel case, such as 'Days' or 'Minutes'. | |
| valueOf | back to summary |
|---|---|
| public static TemporalFields. | |
| values | back to summary |
|---|---|
| public static TemporalFields. | |