Class ZoneOffsetTransition
- All Implemented Interfaces:
Serializable,Comparable<ZoneOffsetTransition>
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'.
- Implementation Requirements:
- This class is immutable and thread-safe.
- Since:
- 1.8
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionintcompareTo(ZoneOffsetTransition otherTransition) Compares this transition to another based on the transition instant.booleanChecks if this object equals another.Gets the local transition date-time, as would be expressed with the 'after' offset.Gets the local transition date-time, as would be expressed with the 'before' offset.Gets the duration of the transition.Gets the transition instant.Gets the offset after the transition.Gets the offset before the transition.inthashCode()Returns a suitable hash code.booleanisGap()Does this transition represent a gap in the local time-line.booleanDoes this transition represent an overlap in the local time-line.booleanisValidOffset(ZoneOffset offset) Checks if the specified offset is valid during this transition.static ZoneOffsetTransitionof(LocalDateTime transition, ZoneOffset offsetBefore, ZoneOffset offsetAfter) Obtains an instance defining a transition between two offsets.longGets the transition instant as an epoch second.toString()Returns a string describing this object.
-
Method Details
-
of
public static ZoneOffsetTransition of(LocalDateTime transition, ZoneOffset offsetBefore, ZoneOffset offsetAfter) Obtains an instance defining a transition between two offsets.Applications should normally obtain an instance from
ZoneRules. This factory is only intended for use when creatingZoneRules.- Parameters:
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 null- Returns:
- the transition, not null
- Throws:
IllegalArgumentException- ifoffsetBeforeandoffsetAfterare equal, ortransition.getNano()returns non-zero value
-
getInstant
Gets the transition instant.This is the instant of the discontinuity, which is defined as the first instant that the 'after' offset applies.
The methods
getInstant(),getDateTimeBefore()andgetDateTimeAfter()all represent the same instant.- Returns:
- the transition instant, not null
-
toEpochSecond
public long toEpochSecond()Gets the transition instant as an epoch second.- Returns:
- the transition epoch second
-
getDateTimeBefore
Gets the local transition date-time, as would be expressed with the 'before' offset.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.
- Returns:
- the transition date-time expressed with the before offset, not null
-
getDateTimeAfter
Gets the local transition date-time, as would be expressed with the 'after' offset.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.
- Returns:
- the transition date-time expressed with the after offset, not null
-
getOffsetBefore
Gets the offset before the transition.This is the offset in use before the instant of the transition.
- Returns:
- the offset before the transition, not null
-
getOffsetAfter
Gets the offset after the transition.This is the offset in use on and after the instant of the transition.
- Returns:
- the offset after the transition, not null
-
getDuration
Gets the duration of the transition.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.
- Returns:
- the duration of the transition, positive for gaps, negative for overlaps
-
isGap
public boolean isGap()Does this transition represent a gap in the local time-line.Gaps occur where there are local date-times that simply do not exist. An example would be when the offset changes from
+01:00to+02:00. This might be described as 'the clocks will move forward one hour tonight at 1am'.- Returns:
- true if this transition is a gap, false if it is an overlap
-
isOverlap
public boolean isOverlap()Does this transition represent an overlap in the local time-line.Overlaps occur where there are local date-times that exist twice. An example would be when the offset changes from
+02:00to+01:00. This might be described as 'the clocks will move back one hour tonight at 2am'.- Returns:
- true if this transition is an overlap, false if it is a gap
-
isValidOffset
Checks if the specified offset is valid during this transition.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.
- Parameters:
offset- the offset to check, null returns false- Returns:
- true if the offset is valid during the transition
-
compareTo
Compares this transition to another based on the transition instant.This compares the instants of each transition. The offsets are ignored, making this order inconsistent with equals.
- Specified by:
compareToin interfaceComparable<ZoneOffsetTransition>- Parameters:
otherTransition- the transition to compare to, not null- Returns:
- the comparator value, that is the comparison of this transition instant
with
otherTransitioninstant
-
equals
-
hashCode
-
toString
-