Serializable
, Comparable<ZoneOffsetTransition>
public final class ZoneOffsetTransition extends Object implements Comparable<ZoneOffsetTransition>, Serializable
A transition between two offsets is normally the result of a daylight savings cutover. The discontinuity is normally a gap in spring and an overlap in autumn. ZoneOffsetTransition
models the transition between the two offsets.
Gaps occur where there are local date-times that simply do not exist. An example would be when the offset changes from +03:00
to +04:00
. This might be described as 'the clocks will move forward one hour tonight at 1am'.
Overlaps occur where there are local date-times that exist twice. An example would be when the offset changes from +04:00
to +03:00
. This might be described as 'the clocks will move back one hour tonight at 2am'.
Modifier and Type | Method | Description |
---|---|---|
int |
compareTo |
Compares this transition to another based on the transition instant. |
boolean |
equals |
Checks if this object equals another. |
LocalDateTime |
getDateTimeAfter() |
Gets the local transition date-time, as would be expressed with the 'after' offset. |
LocalDateTime |
getDateTimeBefore() |
Gets the local transition date-time, as would be expressed with the 'before' offset. |
Duration |
getDuration() |
Gets the duration of the transition. |
Instant |
getInstant() |
Gets the transition instant. |
ZoneOffset |
getOffsetAfter() |
Gets the offset after the transition. |
ZoneOffset |
getOffsetBefore() |
Gets the offset before the transition. |
int |
hashCode() |
Returns a suitable hash code. |
boolean |
isGap() |
Does this transition represent a gap in the local time-line. |
boolean |
isOverlap() |
Does this transition represent an overlap in the local time-line. |
boolean |
isValidOffset |
Checks if the specified offset is valid during this transition. |
static ZoneOffsetTransition |
of |
Obtains an instance defining a transition between two offsets. |
long |
toEpochSecond() |
Gets the transition instant as an epoch second. |
String |
toString() |
Returns a string describing this object. |
public static ZoneOffsetTransition of(LocalDateTime transition, ZoneOffset offsetBefore, ZoneOffset offsetAfter)
Applications should normally obtain an instance from ZoneRules
. This factory is only intended for use when creating ZoneRules
.
transition
- the transition date-time at the transition, which never actually occurs, expressed local to the before offset, not nulloffsetBefore
- the offset before the transition, not nulloffsetAfter
- the offset at and after the transition, not nullIllegalArgumentException
- if offsetBefore
and offsetAfter
are equal, or transition.getNano()
returns non-zero valuepublic Instant getInstant()
This is the instant of the discontinuity, which is defined as the first instant that the 'after' offset applies.
The methods getInstant()
, getDateTimeBefore()
and getDateTimeAfter()
all represent the same instant.
public long toEpochSecond()
public LocalDateTime getDateTimeBefore()
This is the date-time where the discontinuity begins expressed with the 'before' offset. At this instant, the 'after' offset is actually used, therefore the combination of this date-time and the 'before' offset will never occur.
The combination of the 'before' date-time and offset represents the same instant as the 'after' date-time and offset.
public LocalDateTime getDateTimeAfter()
This is the first date-time after the discontinuity, when the new offset applies.
The combination of the 'before' date-time and offset represents the same instant as the 'after' date-time and offset.
public ZoneOffset getOffsetBefore()
This is the offset in use before the instant of the transition.
public ZoneOffset getOffsetAfter()
This is the offset in use on and after the instant of the transition.
public Duration getDuration()
In most cases, the transition duration is one hour, however this is not always the case. The duration will be positive for a gap and negative for an overlap. Time-zones are second-based, so the nanosecond part of the duration will be zero.
public boolean isGap()
Gaps occur where there are local date-times that simply do not exist. An example would be when the offset changes from +01:00
to +02:00
. This might be described as 'the clocks will move forward one hour tonight at 1am'.
public boolean isOverlap()
Overlaps occur where there are local date-times that exist twice. An example would be when the offset changes from +02:00
to +01:00
. This might be described as 'the clocks will move back one hour tonight at 2am'.
public boolean isValidOffset(ZoneOffset offset)
This checks to see if the given offset will be valid at some point in the transition. A gap will always return false. An overlap will return true if the offset is either the before or after offset.
offset
- the offset to check, null returns falsepublic int compareTo(ZoneOffsetTransition otherTransition)
This compares the instants of each transition. The offsets are ignored, making this order inconsistent with equals.
compareTo
in interface Comparable<ZoneOffsetTransition>
otherTransition
- the transition to compare to, not nullotherTransition
instantpublic boolean equals(Object other)
The entire state of the object is compared.
public int hashCode()
public String toString()
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/zone/ZoneOffsetTransition.html