* @serial
* @since JDK1.1.4
*/
- private int serialVersionOnStream = 2;
+ private int serialVersionOnStream = 1;
private static final long serialVersionUID = -403250971215465050L;
{
this.startMode = checkRule(month, day, dayOfWeek);
this.startMonth = month;
- this.startDay = day;
+ // FIXME: XXX: JDK 1.2 allows negative values and has 2 new variations
+ // of this method.
+ this.startDay = Math.abs(day);
this.startDayOfWeek = Math.abs(dayOfWeek);
if (this.startTimeMode == WALL_TIME || this.startTimeMode == STANDARD_TIME)
this.startTime = time;
{
this.endMode = checkRule(month, day, dayOfWeek);
this.endMonth = month;
- this.endDay = day;
+ // FIXME: XXX: JDK 1.2 allows negative values and has 2 new variations
+ // of this method.
+ this.endDay = Math.abs(day);
this.endDayOfWeek = Math.abs(dayOfWeek);
if (this.endTimeMode == WALL_TIME)
this.endTime = time;
* <code>offset = cal.get(Calendar.ZONE_OFFSET)
* + cal.get(Calendar.DST_OFFSET);</code>
*
- * This version doesn't suffer this inaccuracy.
+ * You could also use in
*
- * The arguments don't follow the approach for setting start and end rules.
- * The day must be a positive number and dayOfWeek must be a positive value
- * from Calendar. dayOfWeek is redundant, but must match the other values
- * or an inaccurate result may be returned.
+ * This version doesn't suffer this inaccuracy.
*
* @param era the era of the given date
* @param year the year of the given date
* @param month the month of the given date, 0 for January.
* @param day the day of month
- * @param dayOfWeek the day of week; this must match the other fields.
+ * @param dayOfWeek the day of week; this must be matching the
+ * other fields.
* @param millis the millis in the day (in local standard time)
- * @return the time zone offset in milliseconds.
- * @throws IllegalArgumentException if arguments are incorrect.
- */
+ * @return the time zone offset in milliseconds. */
public int getOffset(int era, int year, int month,
int day, int dayOfWeek, int millis)
{
- int daysInMonth = getDaysInMonth(month, 1);
- if (day < 1 || day > daysInMonth)
- throw new IllegalArgumentException("day out of range");
- if (dayOfWeek < Calendar.SUNDAY || dayOfWeek > Calendar.SATURDAY)
- throw new IllegalArgumentException("dayOfWeek out of range");
- if (month < Calendar.JANUARY || month > Calendar.DECEMBER)
- throw new IllegalArgumentException("month out of range");
-
// This method is called by Calendar, so we mustn't use that class.
int daylightSavings = 0;
if (useDaylight && era == GregorianCalendar.AD && year >= startYear)
/**
* Checks if the date given in calXXXX, is before the change between
* dst and standard time.
- * @param calYear the year of the date to check (for leap day checking).
+ * @param calYear the year of the date to check (for leap day cheking).
* @param calMonth the month of the date to check.
* @param calDay the day of month of the date to check.
* @param calDayOfWeek the day of week of the date to check.
case DOW_LE_DOM_MODE:
// The greatest sunday before or equal December, 12
// is the same as smallest sunday after or equal December, 6.
- day = Math.abs(day) - 6;
+ day -= 6;
case DOW_GE_DOM_MODE:
&& startDay == zone.startDay
&& startDayOfWeek == zone.startDayOfWeek
&& startTime == zone.startTime
- && startTimeMode == zone.startTimeMode
&& endMonth == zone.endMonth
&& endDay == zone.endDay
&& endDayOfWeek == zone.endDayOfWeek
- && endTime == zone.endTime
- && endTimeMode == zone.endTimeMode);
+ && endTime == zone.endTime);
}
/**
&& startDay == zone.startDay
&& startDayOfWeek == zone.startDayOfWeek
&& startTime == zone.startTime
- && startTimeMode == zone.startTimeMode
&& endMonth == zone.endMonth
&& endDay == zone.endDay
- && endDayOfWeek == zone.endDayOfWeek
- && endTime == zone.endTime
- && endTimeMode == zone.endTimeMode);
+ && endDayOfWeek == zone.endDayOfWeek && endTime == zone.endTime);
}
/**
+ ",startDay=" + startDay
+ ",startDayOfWeek=" + startDayOfWeek
+ ",startTime=" + startTime
- + ",startTimeMode=" + startTimeMode
+ ",endMode=" + endMode
+ ",endMonth=" + endMonth
+ ",endDay=" + endDay
+ ",endDayOfWeek=" + endDayOfWeek
- + ",endTime=" + endTime
- + ",endTimeMode=" + endTimeMode
- : "") + "]";
+ + ",endTime=" + endTime : "") + "]";
}
/**
dstSavings = 60 * 60 * 1000;
endMode = DOW_IN_MONTH_MODE;
startMode = DOW_IN_MONTH_MODE;
- startTimeMode = WALL_TIME;
- endTimeMode = WALL_TIME;
- serialVersionOnStream = 2;
+ serialVersionOnStream = 1;
}
else
{