>378 * @param d2 другая граничная дата диапазона.
>379 *
>380 * @return логический признак.
>381 */
>382 public boolean isInRange(final SerialDate d1, final SerialDate d2) {
>383 return isInRange(d1, d2, SerialDate.INCLUDE_BOTH);
>384 }
>385
>386 /**
>387 * Возвращает true
, если текущий объект SerialDate принадлежит
Листинг Б.5 (продолжение)
>388 * заданному диапазону (включение границ указывается при вызове). Порядок
>389 * d1 и d2 не важен.
>390 *
>391 * @param d1 граничная дата диапазона.
>392 * @param d2 другая граничная дата диапазона.
>393 * @param include код, управляющий включением начальной и конечной дат
>394 * в диапазон.
>395 *
>396 * @return true
, если текущий объект SerialDate принадлежит
>397 * заданному диапазону.
>398 */
>399 public boolean isInRange(final SerialDate d1, final SerialDate d2,
>400 final int include) {
>401 final int s1 = d1.toSerial();
>402 final int s2 = d2.toSerial();
>403 final int start = Math.min(s1, s2);
>404 final int end = Math.max(s1, s2);
>405
>406 final int s = toSerial();
>407 if (include == SerialDate.INCLUDE_BOTH) {
>408 return (s >= start && s <= end);
>409 }
>410 else if (include == SerialDate.INCLUDE_FIRST) {
>411 return (s >= start && s < end);
>412 }
>413 else if (include == SerialDate.INCLUDE_SECOND) {
>414 return (s > start && s <= end);
>415 }
>416 else {
>417 return (s > start && s < end);
>418 }
>419 }
>420
>421 /**
>422 * Вычисляет порядковый номер по дню, месяцу и году.
>423 *
>424 * 1 января 1900 = 2.
>425 *
>426 * @param d день.
>427 * @param m месяц.
>428 * @param y год.
>429 *
>430 * @return порядковый номер для заданного дня, месяца и года.
>431 */
>432 private int calcSerial(final int d, final int m, final int y) {
>433 final int yy = ((y - 1900) * 365) + SerialDate.leapYearCount(y - 1);
>434 int mm = SerialDate.AGGREGATE_DAYS_TO_END_OF_PRECEDING_MONTH[m];
>435 if (m > MonthConstants.FEBRUARY) {
>436 if (SerialDate.isLeapYear(y)) {
>437 mm = mm + 1;
>438 }
>439 }
>440 final int dd = d;
>441 return yy + mm + dd + 1;
>442 }
>443
>444 /**
>445 * Вычисляет день, месяц и год по порядковому номеру.
>446 */
>447 private void calcDayMonthYear() {