Class DateTimeBuilder

java.lang.Object
org.threeten.bp.format.DateTimeBuilder
All Implemented Interfaces:
Cloneable, TemporalAccessor

public final class DateTimeBuilder extends Object implements TemporalAccessor, Cloneable
Builder that can holds date and time fields and related date and time objects.

The builder is used to hold onto different elements of date and time. It is designed as two separate maps:

  • from TemporalField to long value, where the value may be outside the valid range for the field
  • from Class to TemporalAccessor, holding larger scale objects like LocalDateTime.

Specification for implementors

This class is mutable and not thread-safe. It should only be used from a single thread.
  • Constructor Details

    • DateTimeBuilder

      public DateTimeBuilder()
      Creates an empty instance of the builder.
    • DateTimeBuilder

      public DateTimeBuilder(TemporalField field, long value)
      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 null
      value - the value to add, not null
  • Method Details

    • resolve

      public DateTimeBuilder resolve(ResolverStyle resolverStyle, Set<TemporalField> resolverFields)
      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

      public <R> R build(TemporalQuery<R> type)
      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 invoke from on, not null
      Returns:
      the extracted value, not null
      Throws:
      DateTimeException - if an error occurs
    • isSupported

      public boolean isSupported(TemporalField field)
      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 and get methods will throw an exception.

      Specification for implementors

      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.

      Specified by:
      isSupported in interface TemporalAccessor
      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

      public long getLong(TemporalField field)
      Description copied from interface: TemporalAccessor
      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.

      Specification for implementors

      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.

      Specified by:
      getLong in interface TemporalAccessor
      Parameters:
      field - the field to get, not null
      Returns:
      the value for the field
    • query

      public <R> R query(TemporalQuery<R> 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 and ZoneId::from. Further implementations are on TemporalQueries. 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 interface TemporalAccessor
      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

      public String toString()
      Overrides:
      toString in class Object