Framework-level interface defining read-only access to a temporal object, such as a date, time, offset or some combination of these.
This is the base interface type for date, time and offset objects. It is implemented by those classes that can provide information as {@linkplain TemporalField fields} or {@linkplain TemporalQuery queries}.
Most date and time information can be represented as a number. These are modeled using {@code TemporalField} with the number held usinga {@code long} to handle large values. Year, month and day-of-month aresimple examples of fields, but they also include instant and offsets. See {@link ChronoField} for the standard set of fields.
Two pieces of date/time information cannot be represented by numbers, the {@linkplain java.time.chrono.Chronology chronology} and the{@linkplain java.time.ZoneId time-zone}. These can be accessed via {@linkplain #query(TemporalQuery) queries} usingthe static methods defined on {@link TemporalQuery}.
A sub-interface, {@link Temporal}, extends this definition to one that also supports adjustment and manipulation on more complete temporal objects.
This interface is a framework-level interface that should not be widely used in application code. Instead, applications should create and pass around instances of concrete types, such as {@code LocalDate}. There are many reasons for this, part of which is that implementations of this interface may be in calendar systems other than ISO. See {@link java.time.chrono.ChronoLocalDate} for a fuller discussion of the issues.
@implSpec This interface places no restrictions on the mutability of implementations, however immutability is strongly recommended.
@since 1.8