Class DateTimeBuilder
- All Implemented Interfaces:
Cloneable
,TemporalAccessor
The builder is used to hold onto different elements of date and time. It is designed as two separate maps:
- from
TemporalField
tolong
value, where the value may be outside the valid range for the field - from
Class
toTemporalAccessor
, holding larger scale objects likeLocalDateTime
.
Specification for implementors
This class is mutable and not thread-safe. It should only be used from a single thread.-
Constructor Summary
ConstructorsConstructorDescriptionCreates an empty instance of the builder.DateTimeBuilder
(TemporalField field, long value) Creates a new instance of the builder with a single field-value. -
Method Summary
Modifier and TypeMethodDescription<R> R
build
(TemporalQuery<R> type) Builds the specified type from the values in this builder.long
getLong
(TemporalField field) Gets the value of the specified field as along
.boolean
isSupported
(TemporalField field) Checks if the specified field is supported.<R> R
query
(TemporalQuery<R> query) Queries this date-time.resolve
(ResolverStyle resolverStyle, Set<TemporalField> resolverFields) Resolves the builder, evaluating the date and time.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.threeten.bp.temporal.TemporalAccessor
get, range
-
Constructor Details
-
DateTimeBuilder
public DateTimeBuilder()Creates an empty instance of the builder. -
DateTimeBuilder
Creates a new instance of the builder with a single field-value.This is equivalent to using
addFieldValue(TemporalField, long)
on an empty builder.- Parameters:
field
- the field to add, not nullvalue
- the value to add, not null
-
-
Method Details
-
resolve
Resolves the builder, evaluating the date and time.This examines the contents of the builder and resolves it to produce the best available date and time, throwing an exception if a problem occurs. Calling this method changes the state of the builder.
- Parameters:
resolverStyle
- how to resolve- Returns:
this
, for method chaining
-
build
Builds the specified type from the values in this builder.This attempts to build the specified type from this builder. If the builder cannot return the type, an exception is thrown.
- Type Parameters:
R
- the type to return- Parameters:
type
- the type to invokefrom
on, not null- Returns:
- the extracted value, not null
- Throws:
DateTimeException
- if an error occurs
-
isSupported
Description copied from interface:TemporalAccessor
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
andget
methods will throw an exception.Specification for implementors
Implementations must check and handle all fields defined inChronoField
. If the field is supported, then true is returned, otherwise falseIf the field is not a
ChronoField
, then the result of this method is obtained by invokingTemporalField.isSupportedBy(TemporalAccessor)
passingthis
as the argument.Implementations must not alter this object.
- Specified by:
isSupported
in interfaceTemporalAccessor
- Parameters:
field
- the field to check, null returns false- Returns:
- true if this date-time can be queried for the field, false if not
-
getLong
Description copied from interface:TemporalAccessor
Gets the value of the specified field as along
.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.
Specification for implementors
Implementations must check and handle all fields defined inChronoField
. If the field is supported, then the value of the field must be returned. If unsupported, then aDateTimeException
must be thrown.If the field is not a
ChronoField
, then the result of this method is obtained by invokingTemporalField.getFrom(TemporalAccessor)
passingthis
as the argument.Implementations must not alter either this object.
- Specified by:
getLong
in interfaceTemporalAccessor
- Parameters:
field
- the field to get, not null- Returns:
- the value for the field
-
query
Description copied from interface:TemporalAccessor
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
andZoneId::from
. Further implementations are onTemporalQueries
. Queries may also be defined by applications.Specification for implementors
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); }
- Specified by:
query
in interfaceTemporalAccessor
- Type Parameters:
R
- the type of the result- Parameters:
query
- the query to invoke, not null- Returns:
- the query result, null may be returned (defined by the query)
-
toString
-