Adjusts the specified temporal object.
Adjusts the specified temporal object.
This adjusts the specified temporal object using the logic encapsulated in the implementing class. Examples might be an adjuster that sets the date avoiding weekends, or one that sets the date to the last day of the month.
There are two equivalent ways of using this method.
The first is to invoke this method directly.
The second is to use Temporal#with(TemporalAdjuster)
:
// these two lines are equivalent, but the second approach is recommended temporal = thisAdjuster.adjustInto(temporal); temporal = temporal.with(thisAdjuster);It is recommended to use the second approach,
with(TemporalAdjuster)
,
as it is a lot clearer to read in code.The implementation must take the input object and adjust it.
The implementation defines the logic of the adjustment and is responsible for
documenting that logic. It may use any method on Temporal
to
query the temporal object and perform the adjustment.
The returned object must have the same observable type as the input object
The input object must not be altered. Instead, an adjusted copy of the original must be returned. This provides equivalent, safe behavior for immutable and mutable temporal objects.
The input temporal object may be in a calendar system other than ISO.
Implementations may choose to document compatibility with other calendar systems,
or reject non-ISO temporal objects by querying the chronology
.
This method may be called from multiple threads in parallel. It must be thread-safe when invoked.
the temporal object to adjust, not null
an object of the same observable type with the adjustment made, not null
ArithmeticException
if numeric overflow occurs
DateTimeException
if unable to make the adjustment
Gets the value of the specified field as an int
.
Gets the value of the specified field as an int
.
This queries the date-time for the value for the specified field. The returned value will always be within the valid range of values for the field. If the date-time cannot return the value, because the field is unsupported or for some other reason, an exception will be thrown.
Implementations must check and handle all fields defined in ChronoField
.
If the field is supported and has an int
range, then the value of
the field must be returned.
If unsupported, then a DateTimeException
must be thrown.
If the field is not a ChronoField
, then the result of this method
is obtained by invoking TemporalField.getFrom(TemporalAccessor)
passing this
as the argument.
Implementations must not alter either this object.
the field to get, not null
the value for the field, within the valid range of values
ArithmeticException
if numeric overflow occurs
DateTimeException
if the value is outside the range of valid values for the field
Gets the textual representation of this era.
Gets the textual representation of this era.
This returns the textual name used to identify the era. The parameters control the style of the returned text and the locale.
If no textual mapping is found then the numeric value
is returned.
the style of the text required, not null
the locale to use, not null
the text value of the era, not null
Gets the value of the specified field as a long
.
Gets the value of the specified field as a long
.
This queries the date-time for the value for the specified field. The returned value may be outside the valid range of values for the field. If the date-time cannot return the value, because the field is unsupported or for some other reason, an exception will be thrown.
Implementations must check and handle all fields defined in ChronoField
.
If the field is supported, then the value of the field must be returned.
If unsupported, then a DateTimeException
must be thrown.
If the field is not a ChronoField
, then the result of this method
is obtained by invoking TemporalField.getFrom(TemporalAccessor)
passing this
as the argument.
Implementations must not alter either this object.
the field to get, not null
the value for the field
ArithmeticException
if numeric overflow occurs
DateTimeException
if a value for the field cannot be obtained
Gets the era numeric value.
Gets the era numeric value.
The current era (from ISO year -543 onwards) has the value 1 The previous era has the value 0.
the era value, from 0 (BEFORE_BE) to 1 (BE)
Checks if the specified field is supported.
Checks if the specified field is supported.
This checks if the date-time can be queried for the specified field.
If false, then calling the range
and get
methods will throw an exception.
Implementations must check and handle all fields defined in ChronoField
.
If the field is supported, then true is returned, otherwise false
If the field is not a ChronoField
, then the result of this method
is obtained by invoking TemporalField.isSupportedBy(TemporalAccessor)
passing this
as the argument.
Implementations must not alter this object.
the field to check, null returns false
true if this date-time can be queried for the field, false if not
Queries this date-time.
Queries this date-time.
This queries this date-time using the specified query strategy object.
Queries are a key tool for extracting information from date-times. They exists to externalize the process of querying, permitting different approaches, as per the strategy design pattern. Examples might be a query that checks if the date is the day before February 29th in a leap year, or calculates the number of days to your next birthday.
The most common query implementations are method references, such as
LocalDate::from
and ZoneId::from
.
Further implementations are on TemporalQueries
.
Queries may also be defined by applications.
Implementations of this method must behave as follows:
public <R> R query(TemporalQuery<R> type) { // only include an if statement if the implementation can return it if (query == TemporalQueries.zoneId()) return // the ZoneId if (query == TemporalQueries.chronology()) return // the Chrono if (query == TemporalQueries.precision()) return // the precision // call default method return super.query(query); }
the type of the result
the query to invoke, not null
the query result, null may be returned (defined by the query)
ArithmeticException
if numeric overflow occurs
DateTimeException
if unable to query
Gets the range of valid values for the specified field.
Gets the range of valid values for the specified field.
All fields can be expressed as a long
integer.
This method returns an object that describes the valid range for that value.
The value of this temporal object is used to enhance the accuracy of the returned range.
If the date-time cannot return the range, because the field is unsupported or for
some other reason, an exception will be thrown.
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.
Implementations must check and handle all fields defined in ChronoField
.
If the field is supported, then the range of the field must be returned.
If unsupported, then a DateTimeException
must be thrown.
If the field is not a ChronoField
, then the result of this method
is obtained by invoking TemporalField.rangeRefinedBy(TemporalAccessorl)
passing this
as the argument.
Implementations must not alter either this object.
the field to query the range for, not null
the range of valid values for the field, not null
DateTimeException
if the range for the field cannot be obtained
An era in the Thai Buddhist calendar system.
The Thai Buddhist calendar system has two eras.
Do not use ordinal() to obtain the numeric representation of a ThaiBuddhistEra instance. Use getValue() instead.
Specification for implementors
This is an immutable and thread-safe enum.