Class ZoneOffsetTransitionRule
- java.lang.Object
-
- javax.time.calendar.zone.ZoneOffsetTransitionRule
-
- All Implemented Interfaces:
java.io.Serializable
public final class ZoneOffsetTransitionRule extends java.lang.Object implements java.io.Serializable
A rule expressing how to create a transition.This class allows rules for identifying future transitions to be expressed. A rule might be written in many forms:
- the 16th March
- the Sunday on or after the 16th March
- the Sunday on or before the 16th March
- the last Sunday in February
ZoneOffsetTransitionRule is immutable and thread-safe.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private byte
dom
The day-of-month of the month-day of the cutover week.private DayOfWeek
dow
The cutover day-of-week, null to retain the day-of-month.private MonthOfYear
month
The month of the month-day of the first day of the cutover week.private ZoneOffset
offsetAfter
The offset after the cutover.private ZoneOffset
offsetBefore
The offset before the cutover.private static long
serialVersionUID
A serialization identifier for this class.private ZoneOffset
standardOffset
The standard offset at the cutover.private LocalTime
time
The cutover time in the 'before' offset.private ZoneRulesBuilder.TimeDefinition
timeDefinition
The definition of how the local time should be interpreted.private boolean
timeEndOfDay
Whether the cutover time is midnight at the end of day.
-
Constructor Summary
Constructors Constructor Description ZoneOffsetTransitionRule(MonthOfYear month, int dayOfMonthIndicator, DayOfWeek dayOfWeek, LocalTime time, boolean timeEndOfDay, ZoneRulesBuilder.TimeDefinition timeDefnition, ZoneOffset standardOffset, ZoneOffset offsetBefore, ZoneOffset offsetAfter)
Creates an instance defining the yearly rule to create transitions between two offsets.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ZoneOffsetTransition
createTransition(int year)
Creates a transition instance for the specified year.boolean
equals(java.lang.Object otherRule)
Checks if this object equals another.int
getDayOfMonthIndicator()
Gets the indicator of the day-of-month of the transition.DayOfWeek
getDayOfWeek()
Gets the day-of-week of the transition.LocalTime
getLocalTime()
Gets the local time of day of the transition which must be checked withisMidnightEndOfDay()
.MonthOfYear
getMonthOfYear()
Gets the month of the transition.ZoneOffset
getOffsetAfter()
Gets the offset after the transition.ZoneOffset
getOffsetBefore()
Gets the offset before the transition.ZoneOffset
getStandardOffset()
Gets the standard offset in force at the transition.ZoneRulesBuilder.TimeDefinition
getTimeDefinition()
Gets the time definition, specifying how to convert the time to an instant.int
hashCode()
Returns a suitable hash code.boolean
isMidnightEndOfDay()
Is the transition local time midnight at the end of day.static ZoneOffsetTransitionRule
of(MonthOfYear month, int dayOfMonthIndicator, DayOfWeek dayOfWeek, LocalTime time, boolean timeEndOfDay, ZoneRulesBuilder.TimeDefinition timeDefnition, ZoneOffset standardOffset, ZoneOffset offsetBefore, ZoneOffset offsetAfter)
Creates an instance defining the yearly rule to create transitions between two offsets.(package private) static ZoneOffsetTransitionRule
readExternal(java.io.DataInput in)
Reads the state from the stream.java.lang.String
toString()
Returns a string describing this object.(package private) void
writeExternal(java.io.DataOutput out)
Writes the state to the stream.private java.lang.Object
writeReplace()
Uses a serialization delegate.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
A serialization identifier for this class.- See Also:
- Constant Field Values
-
month
private final MonthOfYear month
The month of the month-day of the first day of the cutover week. The actual date will be adjusted by the dowChange field.
-
dom
private final byte dom
The day-of-month of the month-day of the cutover week. If positive, it is the start of the week where the cutover can occur. If negative, it represents the end of the week where cutover can occur. The value is the number of days from the end of the month, such that-1
is the last day of the month,-2
is the second to last day, and so on.
-
dow
private final DayOfWeek dow
The cutover day-of-week, null to retain the day-of-month.
-
time
private final LocalTime time
The cutover time in the 'before' offset.
-
timeEndOfDay
private boolean timeEndOfDay
Whether the cutover time is midnight at the end of day.
-
timeDefinition
private final ZoneRulesBuilder.TimeDefinition timeDefinition
The definition of how the local time should be interpreted.
-
standardOffset
private final ZoneOffset standardOffset
The standard offset at the cutover.
-
offsetBefore
private final ZoneOffset offsetBefore
The offset before the cutover.
-
offsetAfter
private final ZoneOffset offsetAfter
The offset after the cutover.
-
-
Constructor Detail
-
ZoneOffsetTransitionRule
public ZoneOffsetTransitionRule(MonthOfYear month, int dayOfMonthIndicator, DayOfWeek dayOfWeek, LocalTime time, boolean timeEndOfDay, ZoneRulesBuilder.TimeDefinition timeDefnition, ZoneOffset standardOffset, ZoneOffset offsetBefore, ZoneOffset offsetAfter)
Creates an instance defining the yearly rule to create transitions between two offsets.- Parameters:
month
- the month of the month-day of the first day of the cutover week, not nulldayOfMonthIndicator
- the day of the month-day of the cutover week, positive if the week is that day or later, negative if the week is that day or earlier, counting from the last day of the month, from -28 to 31 excluding 0dayOfWeek
- the required day-of-week, null if the month-day should not be changedtime
- the cutover time in the 'before' offset, not nulltimeEndOfDay
- whether the time is midnight at the end of daytimeDefnition
- how to interpret the cutoverstandardOffset
- the standard offset in force at the cutover, not nulloffsetBefore
- the offset before the cutover, not nulloffsetAfter
- the offset after the cutover, not null- Throws:
java.lang.IllegalArgumentException
- if the day of month indicator is invalidjava.lang.IllegalArgumentException
- if the end of day flag is true when the time is not midnight
-
-
Method Detail
-
of
public static ZoneOffsetTransitionRule of(MonthOfYear month, int dayOfMonthIndicator, DayOfWeek dayOfWeek, LocalTime time, boolean timeEndOfDay, ZoneRulesBuilder.TimeDefinition timeDefnition, ZoneOffset standardOffset, ZoneOffset offsetBefore, ZoneOffset offsetAfter)
Creates an instance defining the yearly rule to create transitions between two offsets.Applications should normally obtain an instance from
ZoneRules
. This constructor is intended for use by implementors ofZoneRules
.- Parameters:
month
- the month of the month-day of the first day of the cutover week, not nulldayOfMonthIndicator
- the day of the month-day of the cutover week, positive if the week is that day or later, negative if the week is that day or earlier, counting from the last day of the month, from -28 to 31 excluding 0dayOfWeek
- the required day-of-week, null if the month-day should not be changedtime
- the cutover time in the 'before' offset, not nulltimeEndOfDay
- whether the time is midnight at the end of daytimeDefnition
- how to interpret the cutoverstandardOffset
- the standard offset in force at the cutover, not nulloffsetBefore
- the offset before the cutover, not nulloffsetAfter
- the offset after the cutover, not null- Throws:
java.lang.IllegalArgumentException
- if the day of month indicator is invalidjava.lang.IllegalArgumentException
- if the end of day flag is true when the time is not midnight
-
writeReplace
private java.lang.Object writeReplace()
Uses a serialization delegate.- Returns:
- the replacing object, never null
-
writeExternal
void writeExternal(java.io.DataOutput out) throws java.io.IOException
Writes the state to the stream.- Parameters:
out
- the output stream, not null- Throws:
java.io.IOException
- if an error occurs
-
readExternal
static ZoneOffsetTransitionRule readExternal(java.io.DataInput in) throws java.io.IOException
Reads the state from the stream.- Parameters:
in
- the input stream, not null- Returns:
- the created object, never null
- Throws:
java.io.IOException
- if an error occurs
-
getMonthOfYear
public MonthOfYear getMonthOfYear()
Gets the month of the transition.If the rule defines an exact date then the month is the month of that date.
If the rule defines a week where the transition might occur, then the month if the month of either the earliest or latest possible date of the cutover.
- Returns:
- the month of the transition, never null
-
getDayOfMonthIndicator
public int getDayOfMonthIndicator()
Gets the indicator of the day-of-month of the transition.If the rule defines an exact date then the day is the month of that date.
If the rule defines a week where the transition might occur, then the day defines either the start of the end of the transition week.
If the value is positive, then it represents a normal day-of-month, and is the earliest possible date that the transition can be. The date may refer to 29th February which should be treated as 1st March in non-leap years.
If the value is negative, then it represents the number of days back from the end of the month where
-1
is the last day of the month. In this case, the day identified is the latest possible date that the transition can be.- Returns:
- the day-of-month indicator, from -28 to 31 excluding 0
-
getDayOfWeek
public DayOfWeek getDayOfWeek()
Gets the day-of-week of the transition.If the rule defines an exact date then this returns null.
If the rule defines a week where the cutover might occur, then this method returns the day-of-week that the month-day will be adjusted to. If the day is positive then the adjustment is later. If the day is negative then the adjustment is earlier.
- Returns:
- the day-of-week that the transition occurs, null if the rule defines an exact date
-
getLocalTime
public LocalTime getLocalTime()
Gets the local time of day of the transition which must be checked withisMidnightEndOfDay()
.The time is converted into an instant using the time definition.
- Returns:
- the local time of day of the transition, never null
-
isMidnightEndOfDay
public boolean isMidnightEndOfDay()
Is the transition local time midnight at the end of day.The transition may be represented as occurring at 24:00.
- Returns:
- whether a local time of midnight is at the start or end of the day
-
getTimeDefinition
public ZoneRulesBuilder.TimeDefinition getTimeDefinition()
Gets the time definition, specifying how to convert the time to an instant.The local time can be converted to an instant using the standard offset, the wall offset or UTC.
- Returns:
- the time definition, never null
-
getStandardOffset
public ZoneOffset getStandardOffset()
Gets the standard offset in force at the transition.- Returns:
- the standard offset, never null
-
getOffsetBefore
public ZoneOffset getOffsetBefore()
Gets the offset before the transition.- Returns:
- the offset before, never null
-
getOffsetAfter
public ZoneOffset getOffsetAfter()
Gets the offset after the transition.- Returns:
- the offset after, never null
-
createTransition
public ZoneOffsetTransition createTransition(int year)
Creates a transition instance for the specified year.Calculations are performed using the ISO-8601 chronology.
- Parameters:
year
- the year to create a transition for, not null- Returns:
- the transition instance, never null
-
equals
public boolean equals(java.lang.Object otherRule)
Checks if this object equals another.The entire state of the object is compared.
- Overrides:
equals
in classjava.lang.Object
- Parameters:
otherRule
- the other object to compare to, null returns false- Returns:
- true if equal
-
hashCode
public int hashCode()
Returns a suitable hash code.- Overrides:
hashCode
in classjava.lang.Object
- Returns:
- the hash code
-
toString
public java.lang.String toString()
Returns a string describing this object.- Overrides:
toString
in classjava.lang.Object
- Returns:
- a string for debugging, never null
-
-