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 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'.
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'.
ZoneOffsetTransition is immutable and thread-safe.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final long
A serialization identifier for this class.private final OffsetDateTime
The transition date-time with the offset before the transition.private final OffsetDateTime
The transition date-time with the offset after the transition. -
Constructor Summary
ConstructorsConstructorDescriptionZoneOffsetTransition
(OffsetDateTime transition, ZoneOffset offsetAfter) Creates an instance defining a transition between two offsets. -
Method Summary
Modifier and TypeMethodDescriptionint
compareTo
(ZoneOffsetTransition transition) Compares this transition to another based on the transition instant.boolean
Checks if this object equals another.Gets the transition date-time expressed with the 'after' offset.Gets the transition instant date-time expressed with the 'before' offset.Gets the transition instant.getLocal()
Gets the local date-time at the transition which is expressed relative to the 'before' offset.Gets the offset after the transition.Gets the offset before the transition.Gets the length of the transition as aPeriod
.int
hashCode()
Returns a suitable hash code.boolean
isGap()
Does this transition represent a gap in the local time-line.boolean
Does this transition represent a gap in the local time-line.boolean
isValidOffset
(ZoneOffset offset) Checks if the specified offset is valid during this transition.static ZoneOffsetTransition
of
(OffsetDateTime transition, ZoneOffset offsetAfter) Obtains an instance defining a transition between two offsets.(package private) static ZoneOffsetTransition
Reads the state from the stream.toString()
Returns a string describing this object.(package private) void
writeExternal
(DataOutput out) Writes the state to the stream.private Object
Uses a serialization delegate.
-
Field Details
-
serialVersionUID
private static final long serialVersionUIDA serialization identifier for this class.- See Also:
-
transition
The transition date-time with the offset before the transition. -
transitionAfter
The transition date-time with the offset after the transition.
-
-
Constructor Details
-
ZoneOffsetTransition
ZoneOffsetTransition(OffsetDateTime transition, ZoneOffset offsetAfter) Creates an instance defining a transition between two offsets.- Parameters:
transition
- the transition date-time with the offset before the transition, not nulloffsetAfter
- the offset at and after the transition, not null
-
-
Method Details
-
of
Obtains an instance defining a transition between two offsets.Applications should normally obtain an instance from
ZoneRules
. This constructor is intended for use by implementors ofZoneRules
.- Parameters:
transition
- the transition date-time with the offset before the transition, not nulloffsetAfter
- the offset at and after the transition, not null
-
writeReplace
Uses a serialization delegate.- Returns:
- the replacing object, never null
-
writeExternal
Writes the state to the stream.- Parameters:
out
- the output stream, not null- Throws:
IOException
- if an error occurs
-
readExternal
Reads the state from the stream.- Parameters:
in
- the input stream, not null- Returns:
- the created object, never null
- Throws:
IOException
- if an error occurs
-
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
-
getLocal
Gets the local date-time at the transition which is expressed relative to the 'before' offset.This is the date-time where the discontinuity begins. For a gap, this local date-time never occurs, whereas for an overlap it occurs just once after the entire transition is complete. This method is simply
getDateTime().toLocalDateTime()
This value expresses the date-time normally used in verbal communications. For example 'the clocks will move forward one hour tonight at 1am' (a gap) or 'the clocks will move back one hour tonight at 2am' (an overlap).
- Returns:
- the local date-time of the transition, expressed relative to the before offset, not null
-
getDateTimeBefore
Gets the transition instant date-time 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 this is an invalid date-time.
The methods
getInstant()
,getDateTimeBefore()
andgetDateTimeAfter()
all represent the same instant.- Returns:
- the transition date-time expressed with the before offset, not null
-
getDateTimeAfter
Gets the transition date-time expressed with the 'after' offset.This is the first date-time after the discontinuity, when the new offset applies.
The methods
getInstant()
,getDateTimeBefore()
andgetDateTimeAfter()
all represent the same instant.- 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
-
getTransitionSize
Gets the length of the transition as aPeriod
.This will typically be one hour, but might not be. It will be positive for a gap and negative for an overlap.
- Returns:
- the length 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 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'.- Returns:
- true if this transition is a gap, false if it is an overlap
-
isOverlap
public boolean isOverlap()Does this transition represent a gap 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:00
to+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:
compareTo
in interfaceComparable<ZoneOffsetTransition>
- Parameters:
transition
- the transition to compare to, not null- Returns:
- the comparator value, negative if less, positive if greater
-
equals
Checks if this object equals another.The entire state of the object is compared.
-
hashCode
public int hashCode()Returns a suitable hash code. -
toString
Returns a string describing this object.
-