Ejemplo n.º 1
0
int32_t GregorianCalendar::handleGetExtendedYear() {
  int32_t year = kEpochYear;
  switch(resolveFields(kYearPrecedence)) {
  case UCAL_EXTENDED_YEAR:
    year = internalGet(UCAL_EXTENDED_YEAR, kEpochYear);
    break;
  
  case UCAL_YEAR:
    {
      // The year defaults to the epoch start, the era to AD
      int32_t era = internalGet(UCAL_ERA, AD);
      if (era == BC) {
        year = 1 - internalGet(UCAL_YEAR, 1); // Convert to extended year
      } else {
        year = internalGet(UCAL_YEAR, kEpochYear);
      }
    }
    break;

  case UCAL_YEAR_WOY:
    year = handleGetExtendedYearFromWeekFields(internalGet(UCAL_YEAR_WOY), internalGet(UCAL_WEEK_OF_YEAR));
#if defined (U_DEBUG_CAL)
    //    if(internalGet(UCAL_YEAR_WOY) != year) {
    fprintf(stderr, "%s:%d: hGEYFWF[%d,%d] ->  %d\n", 
    __FILE__, __LINE__,internalGet(UCAL_YEAR_WOY),internalGet(UCAL_WEEK_OF_YEAR),year);
      //}
#endif
    break;

    default:
        year = kEpochYear;
  }
  return year;
}
Ejemplo n.º 2
0
int32_t GregorianCalendar::handleGetExtendedYear() {
    // the year to return
    int32_t year = kEpochYear;

    // year field to use
    int32_t yearField = UCAL_EXTENDED_YEAR;

    // There are three separate fields which could be used to
    // derive the proper year.  Use the one most recently set.
    if (fStamp[yearField] < fStamp[UCAL_YEAR])
        yearField = UCAL_YEAR;
    if (fStamp[yearField] < fStamp[UCAL_YEAR_WOY])
        yearField = UCAL_YEAR_WOY;

    // based on the "best" year field, get the year
    switch(yearField) {
    case UCAL_EXTENDED_YEAR:
        year = internalGet(UCAL_EXTENDED_YEAR, kEpochYear);
        break;

    case UCAL_YEAR:
        {
            // The year defaults to the epoch start, the era to AD
            int32_t era = internalGet(UCAL_ERA, AD);
            if (era == BC) {
                year = 1 - internalGet(UCAL_YEAR, 1); // Convert to extended year
            } else {
                year = internalGet(UCAL_YEAR, kEpochYear);
            }
        }
        break;

    case UCAL_YEAR_WOY:
        year = handleGetExtendedYearFromWeekFields(internalGet(UCAL_YEAR_WOY), internalGet(UCAL_WEEK_OF_YEAR));
#if defined (U_DEBUG_CAL)
        //    if(internalGet(UCAL_YEAR_WOY) != year) {
        fprintf(stderr, "%s:%d: hGEYFWF[%d,%d] ->  %d\n", 
            __FILE__, __LINE__,internalGet(UCAL_YEAR_WOY),internalGet(UCAL_WEEK_OF_YEAR),year);
        //}
#endif
        break;

    default:
        year = kEpochYear;
    }
    return year;
}