104 public static final int MINIMUM_YEAR_SUPPORTED = 1900;
105
106 /** Наибольшее значение года, поддерживаемое форматом даты. */
107 public static final int MAXIMUM_YEAR_SUPPORTED = 9999;
108
109 /** Константа для понедельника, эквивалент java.util.Calendar.MONDAY. */
110 public static final int MONDAY = Calendar.MONDAY;
111
112 /**
113 * Константа для вторника, эквивалент java.util.Calendar.TUESDAY.
114 */
115 public static final int TUESDAY = Calendar.TUESDAY;
116
117 /**
118 * Константа для среды, эквивалент
119 * java.util.Calendar.WEDNESDAY.
120 */
121 public static final int WEDNESDAY = Calendar.WEDNESDAY;
122
123 /**
124 * Константа для четверга, эквивалент java.util.Calendar.THURSDAY.
125 */
126 public static final int THURSDAY = Calendar.THURSDAY;
127
128 /** Константа для пятницы, эквивалент java.util.Calendar.FRIDAY. */
129 public static final int FRIDAY = Calendar.FRIDAY;
130
131 /**
132 * Константа для субботы, эквивалент java.util.Calendar.SATURDAY.
133 */
134 public static final int SATURDAY = Calendar.SATURDAY;
135
136 /** Константа для воскресенья, эквивалент java.util.Calendar.SUNDAY. */
137 public static final int SUNDAY = Calendar.SUNDAY;
138
139 /** Количество дней в месяцах невисокосного года. */
140 static final int[] LAST_DAY_OF_MONTH =
141 {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
142
143 /** Количество дней от начала года до конца месяца в невисокосном годе. */
144 static final int[] AGGREGATE_DAYS_TO_END_OF_MONTH =
145 {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
146
147 /** Количество дней до конца предыдущего месяца. */
148 static final int[] AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH =
149 {0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
150
151 /** Количество дней от начала года до конца месяца в високосном годе. */
152 static final int[] LEAP_YEAR_AGGREGATE_DAYS_TO_END_OF_MONTH =
153 {0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366};
154
155 /**
156 * Количество дней до конца предыдущего месяца в високосном годе.
157 */
158 static final int[]
159 LEAP_YEAR_AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH =
160 {0, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366};
161
162 /** Константа для обозначения первой недели месяца. */
163 public static final int FIRST_WEEK_IN_MONTH = 1;
164
165 /** Константа для обозначения второй недели месяца. */
166 public static final int SECOND_WEEK_IN_MONTH = 2;
167
168 /** Константа для обозначения третьей недели месяца. */
169 public static final int THIRD_WEEK_IN_MONTH = 3;
170
171 /** Константа для обозначения четвертой недели месяца. */
172 public static final int FOURTH_WEEK_IN_MONTH = 4;
173
174 /** Константа для обозначения последней недели месяца. */
175 public static final int LAST_WEEK_IN_MONTH = 0;
176
177 /** Константа для обозначения типа диапазона. */
178 public static final int INCLUDE_NONE = 0;
179
180 /** Константа для обозначения типа диапазона. */
181 public static final int INCLUDE_FIRST = 1;
182
183 /** Константа для обозначения типа диапазона. */
184 public static final int INCLUDE_SECOND = 2;
185
186 /** Константа для обозначения типа диапазона. */
Листинг Б.1 (продолжение)
187 public static final int INCLUDE_BOTH = 3;
188
189 /**
190 * Useful constant for specifying a day of the week relative to a fixed
191 * date.
192 */
193 public static final int PRECEDING = -1;
194
195 /**
196 * Константа для определения дня недели относительно
197 * фиксированной даты.
198 */
199 public static final int NEAREST = 0;
200
201 /**
202 * Константа для определения дня недели относительно
203 * фиксированной даты.
204 */
205 public static final int FOLLOWING = 1;
206
207 /** Описание даты. */
208 private String description;
209
210 /**
211 * Конструктор по умолчанию.
212 */
213 protected SerialDate() {
214 }
215
216 /**
217 * Возвращает true
, если целое число code соответствует
218 * действительному дню недели, или false
в противном случае.
219 *
220 * @param code код, проверяемый на допустимость.
221 *
222 * @return true
, если целое число code соответствует
223 * действительному дню недели, false
в противном случае.
224 */
225 public static boolean isValidWeekdayCode(final int code) {
226
227 switch(code) {
228 case SUNDAY:
229 case MONDAY:
230 case TUESDAY:
231 case WEDNESDAY:
232 case THURSDAY:
233 case FRIDAY:
234 case SATURDAY: