Package sun.util.calendar

Examples of sun.util.calendar.BaseCalendar


  BaseCalendar.Date d = getGregorianCutoverDate();

  // Set the cutover year (in the Gregorian year numbering)
        gregorianCutoverYear = d.getYear();

  BaseCalendar jcal = getJulianCalendarSystem();
  d = (BaseCalendar.Date) jcal.newCalendarDate(TimeZone.NO_TIMEZONE);
  jcal.getCalendarDateFromFixedDate(d, gregorianCutoverDate - 1);
  gregorianCutoverYearJulian = d.getNormalizedYear();

  if (time < gregorianCutover) {
      // The field values are no longer valid under the new
      // cutover date.
View Full Code Here


        break;
    }

    // Handle cutover here.
    long fd = getCurrentFixedDate();
    BaseCalendar cal;
    if (gregorianCutoverYear == gregorianCutoverYearJulian) {
        cal = getCutoverCalendarSystem();
    } else if (y == gregorianCutoverYear) {
        cal = gcal;
    } else {
        cal = getJulianCalendarSystem();
    }
    long day1 = fd - (7 * (woy - min));
    // Make sure that the min week has the current DAY_OF_WEEK
    if (cal.getYearFromFixedDate(day1) != y) {
        min++;
    }

    // Make sure the same thing for the max week
    fd += 7 * (max - woy);
    cal = (fd >= gregorianCutoverDate) ? gcal : getJulianCalendarSystem();
    if (cal.getYearFromFixedDate(fd) != y) {
        max--;
    }
    // value: the new WEEK_OF_YEAR which must be converted
    // to month and day of month.
    value = getRolledValue(woy, amount, min, max) - 1;
    BaseCalendar.Date d = getCalendarDate(day1 + value * 7);
    set(MONTH, d.getMonth() - 1);
    set(DAY_OF_MONTH, d.getDayOfMonth());
    return;
      }

        case WEEK_OF_MONTH:
      {
    boolean isCutoverYear = isCutoverYear(cdate.getNormalizedYear());
    // dow: relative day of week from first day of week
    int dow = internalGet(DAY_OF_WEEK) - getFirstDayOfWeek();
    if (dow < 0) {
        dow += 7;
    }

    long fd = getCurrentFixedDate();
    long month1;   // fixed date of the first day (usually 1) of the month
    int monthLength; // actual month length
    if (isCutoverYear) {
        month1 = getFixedDateMonth1(cdate, fd);
        monthLength = actualMonthLength();
    } else {
        month1 = fd - internalGet(DAY_OF_MONTH) + 1;
        monthLength = calsys.getMonthLength(cdate);
    }

    // the first day of week of the month.
    long monthDay1st = calsys.getDayOfWeekDateOnOrBefore(month1 + 6,
                     getFirstDayOfWeek());
    // if the week has enough days to form a week, the
    // week starts from the previous month.
    if ((int)(monthDay1st - month1) >= getMinimalDaysInFirstWeek()) {
        monthDay1st -= 7;
    }
    max = getActualMaximum(field);

    // value: the new WEEK_OF_MONTH value
    int value = getRolledValue(internalGet(field), amount, 1, max) - 1;

    // nfd: fixed date of the rolled date
    long nfd = monthDay1st + value * 7 + dow;

    // Unlike WEEK_OF_YEAR, we need to change day of week if the
    // nfd is out of the month.
    if (nfd < month1) {
        nfd = month1;
    } else if (nfd >= (month1 + monthLength)) {
        nfd = month1 + monthLength - 1;
    }
    int dayOfMonth;
    if (isCutoverYear) {
        // If we are in the cutover year, convert nfd to
        // its calendar date and use dayOfMonth.
        BaseCalendar.Date d = getCalendarDate(nfd);
        dayOfMonth = d.getDayOfMonth();
    } else {
        dayOfMonth = (int)(nfd - month1) + 1;
    }
    set(DAY_OF_MONTH, dayOfMonth);
    return;
      }

        case DAY_OF_MONTH:
      {
    if (!isCutoverYear(cdate.getNormalizedYear())) {
        max = calsys.getMonthLength(cdate);
        break;
    }

    // Cutover year handling
    long fd = getCurrentFixedDate();
    long month1 = getFixedDateMonth1(cdate, fd);
    // It may not be a regular month. Convert the date and range to
    // the relative values, perform the roll, and
    // convert the result back to the rolled date.
    int value = getRolledValue((int)(fd - month1), amount, 0, actualMonthLength() - 1);
    BaseCalendar.Date d = getCalendarDate(month1 + value);
    assert d.getMonth()-1 == internalGet(MONTH);
    set(DAY_OF_MONTH, d.getDayOfMonth());
    return;
      }

        case DAY_OF_YEAR:
      {
    max = getActualMaximum(field);
    if (!isCutoverYear(cdate.getNormalizedYear())) {
        break;
    }

    // Handle cutover here.
    long fd = getCurrentFixedDate();
    long jan1 = fd - internalGet(DAY_OF_YEAR) + 1;
    int value = getRolledValue((int)(fd - jan1) + 1, amount, min, max);
    BaseCalendar.Date d = getCalendarDate(jan1 + value - 1);
    set(MONTH, d.getMonth() - 1);
    set(DAY_OF_MONTH, d.getDayOfMonth());
    return;
      }

        case DAY_OF_WEEK:
      {
    if (!isCutoverYear(cdate.getNormalizedYear())) {
        // If the week of year is in the same year, we can
        // just change DAY_OF_WEEK.
        int weekOfYear = internalGet(WEEK_OF_YEAR);
        if (weekOfYear > 1 && weekOfYear < 52) {
      set(WEEK_OF_YEAR, weekOfYear); // update stamp[WEEK_OF_YEAR]
      max = SATURDAY;
      break;
        }
    }

    // We need to handle it in a different way around year
    // boundaries and in the cutover year. Note that
    // changing era and year values violates the roll
    // rule: not changing larger calendar fields...
    amount %= 7;
    if (amount == 0) {
        return;
    }
    long fd = getCurrentFixedDate();
    long dowFirst = calsys.getDayOfWeekDateOnOrBefore(fd, getFirstDayOfWeek());
    fd += amount;
    if (fd < dowFirst) {
        fd += 7;
    } else if (fd >= dowFirst + 7) {
        fd -= 7;
    }
    BaseCalendar.Date d = getCalendarDate(fd);
    set(ERA, (d.getNormalizedYear() <= 0 ? BCE : CE));
    set(d.getYear(), d.getMonth() - 1, d.getDayOfMonth());
    return;
      }

        case DAY_OF_WEEK_IN_MONTH:
            {
    min = 1; // after normalized, min should be 1.
    if (!isCutoverYear(cdate.getNormalizedYear())) {
        int dom = internalGet(DAY_OF_MONTH);
        int monthLength = calsys.getMonthLength(cdate);
        int lastDays = monthLength % 7;
        max = monthLength / 7;
        int x = (dom - 1) % 7;
        if (x < lastDays) {
      max++;
        }
        set(DAY_OF_WEEK, internalGet(DAY_OF_WEEK));
        break;
    }

    // Cutover year handling
    long fd = getCurrentFixedDate();
    long month1 = getFixedDateMonth1(cdate, fd);
    int monthLength = actualMonthLength();
    int lastDays = monthLength % 7;
    max = monthLength / 7;
    int x = (int)(fd - month1) % 7;
    if (x < lastDays) {
        max++;
    }
    int value = getRolledValue(internalGet(field), amount, min, max) - 1;
    fd = month1 + value * 7 + x;
    BaseCalendar cal = (fd >= gregorianCutoverDate) ? gcal : getJulianCalendarSystem();
    BaseCalendar.Date d = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.NO_TIMEZONE);
    cal.getCalendarDateFromFixedDate(d, fd);
    set(DAY_OF_MONTH, d.getDayOfMonth());
    return;
            }
  }

View Full Code Here

      return getMaximum(field);
  }

  GregorianCalendar gc = getNormalizedCalendar();
  BaseCalendar.Date date = gc.cdate;
  BaseCalendar cal = gc.calsys;
  int normalizedYear = date.getNormalizedYear();

  int value = -1;
        switch (field) {
  case MONTH:
      {
    if (!gc.isCutoverYear(normalizedYear)) {
        value = DECEMBER;
        break;
    }

    // January 1 of the next year may or may not exist.
    long nextJan1;
    do {
        nextJan1 = gcal.getFixedDate(++normalizedYear, BaseCalendar.JANUARY, 1, null);
    } while (nextJan1 < gregorianCutoverDate);
    BaseCalendar.Date d = (BaseCalendar.Date) date.clone();
    cal.getCalendarDateFromFixedDate(d, nextJan1 - 1);
    value = d.getMonth() - 1;
      }
      break;

        case DAY_OF_MONTH:
      {
    value = cal.getMonthLength(date);
    if (!gc.isCutoverYear(normalizedYear) || date.getDayOfMonth() == value) {
        break;
    }

    // Handle cutover year.
    long fd = gc.getCurrentFixedDate();
    if (fd >= gregorianCutoverDate) {
        break;
    }
    int monthLength = gc.actualMonthLength();
    long monthEnd = gc.getFixedDateMonth1(gc.cdate, fd) + monthLength - 1;
    // Convert the fixed date to its calendar date.
    BaseCalendar.Date d = gc.getCalendarDate(monthEnd);
    value = d.getDayOfMonth();
      }       
      break;

        case DAY_OF_YEAR:
      {
    if (!gc.isCutoverYear(normalizedYear)) {
        value = cal.getYearLength(date);
        break;
    }

    // Handle cutover year.
    long jan1;
    if (gregorianCutoverYear == gregorianCutoverYearJulian) {
        BaseCalendar cocal = gc.getCutoverCalendarSystem();
        jan1 = cocal.getFixedDate(normalizedYear, 1, 1, null);
    } else if (normalizedYear == gregorianCutoverYearJulian) {
        jan1 = cal.getFixedDate(normalizedYear, 1, 1, null);
    } else {
        jan1 = gregorianCutoverDate;
    }
View Full Code Here

        prevJan1 = fixedDateJan1 - 365;
        if (CalendarUtils.isGregorianLeapYear(normalizedYear - 1)) {
      --prevJan1;
        }
    } else {
        BaseCalendar calForJan1 = calsys;
        int prevYear = normalizedYear - 1;
        if (prevYear == cutoverYear) {
      calForJan1 = getCutoverCalendarSystem();
        }
        prevJan1 = calForJan1.getFixedDate(prevYear,
                   BaseCalendar.JANUARY,
                   1,
                   null);
        while (prevJan1 > fixedDec31) {
      prevJan1 = getJulianCalendarSystem().getFixedDate(--prevYear,
                    BaseCalendar.JANUARY,
                    1,
                    null);
        }
    }
    weekOfYear = getWeekNumber(prevJan1, fixedDec31);
      } else {
    if (normalizedYear > gregorianCutoverYear ||
        normalizedYear < (gregorianCutoverYearJulian - 1)) {
        // Regular years
        if (weekOfYear >= 52) {
      long nextJan1 = fixedDateJan1 + 365;
      if (cdate.isLeapYear()) {
          nextJan1++;
      }
      long nextJan1st = calsys.getDayOfWeekDateOnOrBefore(nextJan1 + 6,
                      getFirstDayOfWeek());
      int ndays = (int)(nextJan1st - nextJan1);
      if (ndays >= getMinimalDaysInFirstWeek() && fixedDate >= (nextJan1st - 7)) {
          // The first days forms a week in which the date is included.
          weekOfYear = 1;
      }
        }
    } else {
        BaseCalendar calForJan1 = calsys;
        int nextYear = normalizedYear + 1;
        if (nextYear == (gregorianCutoverYearJulian + 1) &&
      nextYear < gregorianCutoverYear) {
      // In case the gap is more than one year.
      nextYear = gregorianCutoverYear;
        }
        if (nextYear == gregorianCutoverYear) {
      calForJan1 = getCutoverCalendarSystem();
        }
        long nextJan1 = calForJan1.getFixedDate(nextYear,
                  BaseCalendar.JANUARY,
                  1,
                  null);
        if (nextJan1 < fixedDate) {
      nextJan1 = gregorianCutoverDate;
      calForJan1 = gcal;
        }
        long nextJan1st = calForJan1.getDayOfWeekDateOnOrBefore(nextJan1 + 6,
                      getFirstDayOfWeek());
        int ndays = (int)(nextJan1st - nextJan1);
        if (ndays >= getMinimalDaysInFirstWeek() && fixedDate >= (nextJan1st - 7)) {
      // The first days forms a week in which the date is included.
      weekOfYear = 1;
View Full Code Here

    // cutover date as the first day of the year.
    return gregorianCutoverDate;
      }
  }
  // January 1 of the normalized year should exist.
  BaseCalendar jcal = getJulianCalendarSystem();
  return jcal.getFixedDate(date.getNormalizedYear(), BaseCalendar.JANUARY, 1, null);
    }
View Full Code Here

     * Returns a CalendarDate produced from the specified fixed date.
     *
     * @param fd the fixed date
     */
    private final BaseCalendar.Date getCalendarDate(long fd) {
  BaseCalendar cal = (fd >= gregorianCutoverDate) ? gcal : getJulianCalendarSystem();
  BaseCalendar.Date d = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.NO_TIMEZONE);
  cal.getCalendarDateFromFixedDate(d, fd);
  return d;
    }
View Full Code Here

      offset += dstSavings;
      break computeOffset;
        }
    }
      }
      BaseCalendar cal = date >= GregorianCalendar.DEFAULT_GREGORIAN_CUTOVER ?
    gcal : (BaseCalendar) CalendarSystem.forName("julian");
      BaseCalendar.Date cdate = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.NO_TIMEZONE);
      // Get the year in local time
      cal.getCalendarDate(date + rawOffset, cdate);
      int year = cdate.getNormalizedYear();
      if (year >= startYear) {
    // Clear time elements for the transition calculations
    cdate.setTimeOfDay(0, 0, 0, 0);
    offset = getOffset(cal, cdate, year, date);
View Full Code Here

  // convert year to its 1-based month value
  int m = month + 1;

  // First, calculate time as a Gregorian date.
  BaseCalendar cal = gcal;
  BaseCalendar.Date cdate = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.NO_TIMEZONE);
  cdate.setDate(y, m, day);
  long time = cal.getTime(cdate); // normalize cdate
  time += millis - rawOffset; // UTC time

  // If the time value represents a time before the default
  // Gregorian cutover, recalculate time using the Julian
  // calendar system. For the Julian calendar system, the
  // normalized year numbering is ..., -2 (BCE 2), -1 (BCE 1),
  // 1, 2 ... which is different from the GregorianCalendar
  // style year numbering (..., -1, 0 (BCE 1), 1, 2, ...).
  if (time < GregorianCalendar.DEFAULT_GREGORIAN_CUTOVER) {
      cal = (BaseCalendar) CalendarSystem.forName("julian");
      cdate = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.NO_TIMEZONE);
      cdate.setNormalizedDate(y, m, day);
      time = cal.getTime(cdate) + millis - rawOffset;
  }

  if ((cdate.getNormalizedYear() != y)
      || (cdate.getMonth() != m)
      || (cdate.getDayOfMonth() != day)
View Full Code Here

      month %= 12;
  } else if (month < 0) {
      y += CalendarUtils.floorDivide(month, 12);
      month = CalendarUtils.mod(month, 12);
  }
  BaseCalendar cal = getCalendarSystem(y);
        cdate = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.getDefaultRef());
  cdate.setNormalizedDate(y, month + 1, date).setTimeOfDay(hrs, min, sec, 0);
  getTimeImpl();
  cdate = null;
    }
View Full Code Here

  } else if (month < 0) {
      y += CalendarUtils.floorDivide(month, 12);
      month = CalendarUtils.mod(month, 12);
  }
  int m = month + 1;
  BaseCalendar cal = getCalendarSystem(y);
        BaseCalendar.Date udate = (BaseCalendar.Date) cal.newCalendarDate(null);
  udate.setNormalizedDate(y, m, date).setTimeOfDay(hrs, min, sec, 0);

  // Use a Date instance to perform normalization. Its fastTime
  // is the UTC value after the normalization.
  Date d = new Date(0);
View Full Code Here

TOP

Related Classes of sun.util.calendar.BaseCalendar

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.