{@inheritDoc} @throws DateTimeException {@inheritDoc} @throws ArithmeticException {@inheritDoc}
{@inheritDoc} @throws DateTimeException {@inheritDoc} @throws ArithmeticException {@inheritDoc}
Compares this date-time to another date-time, including the chronology. !(p) The comparison is based first on the instant, then on the local date-time, then on the zone ID, then on the chronology. It is "consistent with equals", as defined by {@link Comparable}. !(p) If all the date-time objects being compared are _in the same chronology, then the additional chronology stage is not required. !(p) This implementation performs the comparison defined above.
Gets the chronology of this date-time. !(p) The {@code Chronology} represents the calendar system _in use. The era and other fields _in {@link ChronoField} are defined by the chronology.
Gets the zone offset, such as '+01:00'. !(p) This is the offset of the local date-time from UTC/Greenwich.
Gets the zone ID, such as 'Europe/Paris'. !(p) This returns the stored time-zone id used to determine the time-zone rules.
Checks if the instant of this date-time is after that of the specified date-time. !(p) This method differs from the comparison _in {@link #compareTo} _in that it only compares the instant of the date-time. This is equivalent to using {@code dateTime1.toInstant().isAfter(dateTime2.toInstant());}. !(p) This implementation performs the comparison based on the epoch-second and nano-of-second.
Checks if the instant of this date-time is before that of the specified date-time. !(p) This method differs from the comparison _in {@link #compareTo} _in that it only compares the instant of the date-time. This is equivalent to using {@code dateTime1.toInstant().isBefore(dateTime2.toInstant());}. !(p) This implementation performs the comparison based on the epoch-second and nano-of-second.
Checks if the instant of this date-time is equal to that of the specified date-time. !(p) This method differs from the comparison _in {@link #compareTo} and {@link #equals} _in that it only compares the instant of the date-time. This is equivalent to using {@code dateTime1.toInstant().equals(dateTime2.toInstant());}. !(p) This implementation performs the comparison based on the epoch-second and nano-of-second.
Checks if the specified field is supported. !(p) This checks if the specified field can be queried on this date-time. If false, then calling the {@link #range(TemporalField) range}, {@link #get(TemporalField) get} and {@link #_with(TemporalField, long)} methods will throw an exception. !(p) The set of supported fields is defined by the chronology and normally includes all {@code ChronoField} fields. !(p) If the field is not a {@code ChronoField}, then the result of this method is obtained by invoking {@code TemporalField.isSupportedBy(TemporalAccessor)} passing {@code this} as the argument. Whether the field is supported is determined by the field.
Checks if the specified unit is supported. !(p) This checks if the specified unit can be added to or subtracted from this date-time. If false, then calling the {@link #plus(long, TemporalUnit)} and {@link #minus(long, TemporalUnit) minus} methods will throw an exception. !(p) The set of supported units is defined by the chronology and normally includes all {@code ChronoUnit} units except {@code FOREVER}. !(p) If the unit is not a {@code ChronoUnit}, then the result of this method is obtained by invoking {@code TemporalUnit.isSupportedBy(Temporal)} passing {@code this} as the argument. Whether the unit is supported is determined by the unit.
{@inheritDoc} @throws DateTimeException {@inheritDoc} @throws ArithmeticException {@inheritDoc}
{@inheritDoc} @throws DateTimeException {@inheritDoc} @throws ArithmeticException {@inheritDoc}
{@inheritDoc} @throws DateTimeException {@inheritDoc} @throws ArithmeticException {@inheritDoc}
{@inheritDoc} @throws DateTimeException {@inheritDoc} @throws ArithmeticException {@inheritDoc}
Queries this date-time using the specified query. !(p) This queries this date-time using the specified query strategy object. The {@code TemporalQuery} object defines the logic to be used to obtain the result. Read the documentation of the query to understand what the result of this method will be. !(p) The result of this method is obtained by invoking the {@link TemporalQuery#queryFrom(TemporalAccessor)} method on the specified query passing {@code this} as the argument.
Converts this date-time to the number of seconds from the epoch of 1970-01-01T00:00:00Z. !(p) This uses the {@linkplain #toLocalDateTime() local date-time} and {@linkplain #getOffset() offset} to calculate the epoch-second value, which is the number of elapsed seconds from 1970-01-01T00:00:00Z. Instants on the time-line after the epoch are positive, earlier are negative.
Converts this date-time to an {@code Instant}. !(p) This returns an {@code Instant} representing the same point on the time-line as this date-time. The calculation combines the {@linkplain #toLocalDateTime() local date-time} and {@linkplain #getOffset() offset}.
Gets the local date part of this date-time. !(p) This returns a local date with the same year, month and day as this date-time.
Gets the local date-time part of this date-time. !(p) This returns a local date with the same year, month and day as this date-time.
Gets the local time part of this date-time. !(p) This returns a local time with the same hour, minute, second and nanosecond as this date-time.
Returns a copy of this date-time changing the zone offset to the earlier of the two valid offsets at a local time-line overlap. !(p) This method only has any effect when the local time-line overlaps, such as at an autumn daylight savings cutover. In this scenario, there are two valid offsets for the local date-time. Calling this method will return a zoned date-time with the earlier of the two selected. !(p) If this method is called when it is not an overlap, {@code this} is returned. !(p) This instance is immutable and unaffected by this method call.
Returns a copy of this date-time changing the zone offset to the later of the two valid offsets at a local time-line overlap. !(p) This method only has any effect when the local time-line overlaps, such as at an autumn daylight savings cutover. In this scenario, there are two valid offsets for the local date-time. Calling this method will return a zoned date-time with the later of the two selected. !(p) If this method is called when it is not an overlap, {@code this} is returned. !(p) This instance is immutable and unaffected by this method call.
Returns a copy of this date-time with a different time-zone, retaining the instant. !(p) This method changes the time-zone and retains the instant. This normally results _in a change to the local date-time. !(p) This method is based on retaining the same instant, thus gaps and overlaps _in the local time-line have no effect on the result. !(p) To change the offset while keeping the local time, use {@link #withZoneSameLocal(ZoneId)}.
Returns a copy of this date-time with a different time-zone, retaining the local date-time if possible. !(p) This method changes the time-zone and retains the local date-time. The local date-time is only changed if it is invalid for the new zone. !(p) To change the zone and adjust the local date-time, use {@link #withZoneSameInstant(ZoneId)}. !(p) This instance is immutable and unaffected by this method call.
Obtains an instance of {@code ChronoZonedDateTime} from a temporal object. !(p) This creates a zoned date-time based on the specified temporal. A {@code TemporalAccessor} represents an arbitrary set of date and time information, which this factory converts to an instance of {@code ChronoZonedDateTime}. !(p) The conversion extracts and combines the chronology, date, time and zone from the temporal object. The behavior is equivalent to using {@link Chronology#zonedDateTime(TemporalAccessor)} with the extracted chronology. Implementations are permitted to perform optimizations such as accessing those fields that are equivalent to the relevant objects. !(p) This method matches the signature of the functional interface {@link TemporalQuery} allowing it to be used as a query via method reference, {@code ChronoZonedDateTime::from}.
Gets a comparator that compares {@code ChronoZonedDateTime} _in time-line order ignoring the chronology. !(p) This comparator differs from the comparison _in {@link #compareTo} _in that it only compares the underlying instant and not the chronology. This allows dates _in different calendar systems to be compared based on the position of the date-time on the instant time-line. The underlying comparison is equivalent to comparing the epoch-second and nano-of-second.
Checks if the specified unit is supported. !(p) This checks if the specified unit can be added to, or subtracted from, this date-time. If false, then calling the {@link #plus(long, TemporalUnit)} and {@link #minus(long, TemporalUnit) minus} methods will throw an exception.
Returns an adjusted object of the same type as this object with the adjustment made. !(p) This adjusts this date-time according to the rules of the specified adjuster. A simple adjuster might simply set the one of the fields, such as the year field. A more complex adjuster might set the date to the last day of the month. A selection of common adjustments is provided _in {@link hunt.time.temporal.TemporalAdjusters TemporalAdjusters}. These include finding the "last day of the month" and "next Wednesday". The adjuster is responsible for handling special cases, such as the varying lengths of month and leap years. !(p) Some example code indicating how and why this method is used: !(pre) date = date._with(Month.JULY); // most key classes implement TemporalAdjuster date = date._with(lastDayOfMonth()); // static import from Adjusters date = date._with(next(WEDNESDAY)); // static import from Adjusters and DayOfWeek </pre>
Returns an object of the same type as this object with the specified field altered. !(p) This returns a new object based on this one with the value for the specified field changed. For example, on a {@code LocalDate}, this could be used to set the year, month or day-of-month. The returned object will have the same observable type as this object. !(p) 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 field 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.
Returns an object of the same type as this object with an amount added. !(p) This adjusts this temporal, adding according to the rules of the specified amount. The amount is typically a {@link hunt.time.Period} but may be any other type implementing the {@link TemporalAmount} interface, such as {@link hunt.time.Duration}. !(p) Some example code indicating how and why this method is used: !(pre) date = date.plus(period); // add a Period instance date = date.plus(duration); // add a Duration instance date = date.plus(workingDays(6)); // example user-written workingDays method </pre> !(p) Note that calling {@code plus} followed by {@code minus} is not guaranteed to return the same date-time.
Returns an object of the same type as this object with the specified period added. !(p) This method returns a new object based on this one with the specified period added. For example, on a {@code LocalDate}, this could be used to add a number of years, months or days. The returned object will have the same observable type as this object. !(p) In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st January, then adding one month would be unclear. In cases like this, the field 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.
Returns an object of the same type as this object with an amount subtracted. !(p) This adjusts this temporal, subtracting according to the rules of the specified amount. The amount is typically a {@link hunt.time.Period} but may be any other type implementing the {@link TemporalAmount} interface, such as {@link hunt.time.Duration}. !(p) Some example code indicating how and why this method is used: !(pre) date = date.minus(period); // subtract a Period instance date = date.minus(duration); // subtract a Duration instance date = date.minus(workingDays(6)); // example user-written workingDays method </pre> !(p) Note that calling {@code plus} followed by {@code minus} is not guaranteed to return the same date-time.
Returns an object of the same type as this object with the specified period subtracted. !(p) This method returns a new object based on this one with the specified period subtracted. For example, on a {@code LocalDate}, this could be used to subtract a number of years, months or days. The returned object will have the same observable type as this object. !(p) In some cases, changing a field is not fully defined. For example, if the target object is a date representing the 31st March, then subtracting one month would be unclear. In cases like this, the field 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.
Calculates the amount of time until another temporal _in terms of the specified unit. !(p) This calculates the amount of time between two temporal objects _in terms of a single {@code TemporalUnit}. The start and end points are {@code this} and the specified temporal. The end point is converted to be of the same type as the start point if different. 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 {@code startTime.until(endTime, HOURS)}. !(p) 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. !(p) There are two equivalent ways of using this method. The first is to invoke this method directly. The second is to use {@link TemporalUnit#between(Temporal, Temporal)}: !(pre) // these two lines are equivalent temporal = start.until(end, unit); temporal = unit.between(start, end); </pre> The choice should be made based on which makes the code more readable. !(p) For example, this method allows the number of days between two dates to be calculated: !(pre) long daysBetween = start.until(end, DAYS); // or alternatively long daysBetween = DAYS.between(start, end); </pre>
A date-time with a time-zone _in an arbitrary chronology, intended for advanced globalization use cases. !(p) !(b)Most applications should declare method signatures, fields and variables as {@link ZonedDateTime}, not this interface.</b> !(p) A {@code ChronoZonedDateTime} is the abstract representation of an offset date-time where the {@code Chronology chronology}, or calendar system, is pluggable. The date-time is defined _in terms of fields expressed by {@link TemporalField}, where most common implementations are defined _in {@link ChronoField}. The chronology defines how the calendar system operates and the meaning of the standard fields.
!(h3)When to use this interface</h3> The design of the API encourages the use of {@code ZonedDateTime} rather than this interface, even _in the case where the application needs to deal with multiple calendar systems. The rationale for this is explored _in detail _in {@link ChronoLocalDate}. !(p) Ensure that the discussion _in {@code ChronoLocalDate} has been read and understood before using this interface.
@implSpec This interface must be implemented with care to ensure other classes operate correctly. All implementations that can be instantiated must be final, immutable and thread-safe. Subclasses should be Serializable wherever possible.
@param !(D) the concrete type for the date of this date-time @since 1.8