Class StandardZoneRules

java.lang.Object
javax.time.calendar.zone.ZoneRules
javax.time.calendar.zone.StandardZoneRules
All Implemented Interfaces:
Serializable

final class StandardZoneRules extends ZoneRules implements Serializable
The rules describing how the zone offset varies through the year and historically.

ZoneRules is immutable and thread-safe.

  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      A serialization identifier for this class.
      See Also:
    • LAST_CACHED_YEAR

      private static final int LAST_CACHED_YEAR
      The last year to have its transitions cached.
      See Also:
    • standardTransitions

      private final long[] standardTransitions
      The transitions between standard offsets (epoch seconds), sorted.
    • standardOffsets

      private final ZoneOffset[] standardOffsets
      The standard offsets.
    • savingsInstantTransitions

      private final long[] savingsInstantTransitions
      The transitions between instants (epoch seconds), sorted.
    • savingsLocalTransitions

      private final LocalDateTime[] savingsLocalTransitions
      The transitions between local date-times, sorted. This is a paired array, where the first entry is the start of the transition and the second entry is the end of the transition.
    • wallOffsets

      private final ZoneOffset[] wallOffsets
      The wall offsets.
    • lastRules

      private final ZoneOffsetTransitionRule[] lastRules
      The last rule.
    • lastRulesCache

      private final ConcurrentMap<Year,ZoneOffsetTransition[]> lastRulesCache
      The map of recent transitions.
  • Constructor Details

    • StandardZoneRules

      StandardZoneRules(ZoneOffset baseStandardOffset, ZoneOffset baseWallOffset, List<OffsetDateTime> standardOffsetTransitionList, List<ZoneOffsetTransition> transitionList, List<ZoneOffsetTransitionRule> lastRules)
      Constructor.
      Parameters:
      baseStandardOffset - the standard offset to use before legal rules were set, not null
      baseWallOffset - the wall offset to use before legal rules were set, not null
      standardOffsetTransitionList - the list of changes to the standard offset, not null
      transitionList - the list of transitions, not null
      lastRules - the recurring last rules, size 15 or less, not null
    • StandardZoneRules

      private StandardZoneRules(long[] standardTransitions, ZoneOffset[] standardOffsets, long[] savingsInstantTransitions, ZoneOffset[] wallOffsets, ZoneOffsetTransitionRule[] lastRules)
      Constructor.
      Parameters:
      standardTransitions - the standard transitions, not null
      standardOffsets - the standard offsets, not null
      wallOffsets - the wall offsets, not null
      lastRules - the recurring last rules, size 15 or less, not null
      savingsLocalTransitions - the standard transitions, not null
  • Method Details

    • writeReplace

      private Object writeReplace()
      Uses a serialization delegate.
      Returns:
      the replacing object, never null
    • writeExternal

      void writeExternal(DataOutput out) throws IOException
      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
      ClassNotFoundException
    • getOffset

      public ZoneOffset getOffset(InstantProvider instantProvider)
      Gets the offset applicable at the specified instant in this zone.

      For any given instant there can only ever be one valid offset, which is returned by this method. To access more detailed information about the offset at and around the instant use ZoneRules.getOffsetInfo(Instant).

      Specified by:
      getOffset in class ZoneRules
      Parameters:
      instantProvider - the instant to find the offset for, ignored for fixed offset rules, otherwise not null
      Returns:
      the offset, never null
    • getOffsetInfo

      public ZoneOffsetInfo getOffsetInfo(LocalDateTime dt)
      Gets the offset information for a local date-time in this zone.

      This provides access to full details as to the offset or offsets applicable for the local date-time. The mapping from a local date-time to an offset is not straightforward. There are three cases:

      • Normal. Where there is a single offset for the local date-time.
      • Gap. Where there is a gap in the local time-line normally caused by the spring cutover to daylight savings. There are no valid offsets within the gap
      • Overlap. Where there is a gap in the local time-line normally caused by the autumn cutover from daylight savings. There are two valid offsets during the overlap.
      The returned object provides this information and it is vital to check ZoneOffsetInfo.isTransition() to handle the gap or overlap.
      Specified by:
      getOffsetInfo in class ZoneRules
      Parameters:
      dt - the date-time to find the offset information for, not null
      Returns:
      the offset information, never null
    • findOffsetInfo

      private ZoneOffsetInfo findOffsetInfo(LocalDateTime dt, ZoneOffsetTransition trans)
      Finds the offset info for a local date-time and transition.
      Parameters:
      dt - the date-time, not null
      trans - the transition, not null
      Returns:
      the offset info, never null
    • findTransitionArray

      private ZoneOffsetTransition[] findTransitionArray(int year)
      Finds the appropriate transition array for the given year.
      Parameters:
      year - the year, not null
      Returns:
      the transition array, never null
    • getStandardOffset

      public ZoneOffset getStandardOffset(InstantProvider instantProvider)
      Gets the standard offset for the specified instant in this zone.

      This provides access to historic information on how the standard offset has changed over time. The standard offset is the offset before any daylight savings time is applied. This is typically the offset applicable during winter.

      Specified by:
      getStandardOffset in class ZoneRules
      Parameters:
      instantProvider - the instant to find the offset information for, not null
      Returns:
      the standard offset, never null
    • nextTransition

      public ZoneOffsetTransition nextTransition(InstantProvider instantProvider)
      Gets the next transition after the specified transition.
      Specified by:
      nextTransition in class ZoneRules
      Parameters:
      instantProvider - the instant to get the next transition after, not null
      Returns:
      the next transition after the specified instant, null if this is after the last transition
    • previousTransition

      public ZoneOffsetTransition previousTransition(InstantProvider instantProvider)
      Gets the previous transition after the specified transition.
      Specified by:
      previousTransition in class ZoneRules
      Parameters:
      instantProvider - the instant to get the previous transition after, not null
      Returns:
      the previous transition after the specified instant, null if this is before the first transition
    • getTransitions

      public List<ZoneOffsetTransition> getTransitions()
      Gets the complete list of transitions.

      This list normally contains a complete historical set of transitions that have occurred. Some transitions may be in the future, although generally the transition rules handle future years.

      Specified by:
      getTransitions in class ZoneRules
      Returns:
      independent, modifiable copy of the list of transitions, never null
    • getTransitionRules

      public List<ZoneOffsetTransitionRule> getTransitionRules()
      Gets the list of transition rules for years beyond those defined in the transition list.

      The list represents all the transitions that are expected in each year beyond those in the transition list. Normally, there are two transitions per year - into and out of daylight savings time. If daylight savings time does not occur then the list will be empty.

      Specified by:
      getTransitionRules in class ZoneRules
      Returns:
      independent, modifiable copy of the list of transition rules, never null
    • equals

      public boolean equals(Object otherRules)
      Checks if this object equals another, comparing the complete set of rules.

      The entire state of the object is compared.

      Specified by:
      equals in class ZoneRules
      Parameters:
      otherRules - the other rules, null returns false
      other - the other object to compare to, null returns false
      Returns:
      true if equal
    • hashCode

      public int hashCode()
      Returns a suitable hash code.
      Specified by:
      hashCode in class ZoneRules
      Returns:
      the hash code
    • toString

      public String toString()
      Returns a string describing this object.
      Overrides:
      toString in class Object
      Returns:
      a string for debugging, never null