Beispiel #1
0
int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t eyear, int32_t month) 
{
    int32_t era = internalGetEra();
    int32_t day = 1;

    if(eyear == kEraInfo[era].year) {
        if(month == (kEraInfo[era].month-1)) {
            return kEraInfo[era].day;
        }
    }

    return day;
}
Beispiel #2
0
int32_t JapaneseCalendar::handleGetExtendedYear()
{
  int32_t year;

  if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR &&
      newerField(UCAL_EXTENDED_YEAR, UCAL_ERA) == UCAL_EXTENDED_YEAR) {
    year = internalGet(UCAL_EXTENDED_YEAR, 1);
  } else {
    // Subtract one because year starts at 1
    year = internalGet(UCAL_YEAR) + kEraInfo[internalGetEra()].year - 1;
  }
  return year;
  
}
Beispiel #3
0
int32_t JapaneseCalendar::handleGetExtendedYear()
{
    // EXTENDED_YEAR in JapaneseCalendar is a Gregorian year
    // The default value of EXTENDED_YEAR is 1970 (Showa 45)
    int32_t year;

    if (newerField(UCAL_EXTENDED_YEAR, UCAL_YEAR) == UCAL_EXTENDED_YEAR &&
        newerField(UCAL_EXTENDED_YEAR, UCAL_ERA) == UCAL_EXTENDED_YEAR) {
            year = internalGet(UCAL_EXTENDED_YEAR, kGregorianEpoch);
        } else {
            // Subtract one because year starts at 1
            year = internalGet(UCAL_YEAR) + kEraInfo[internalGetEra()].year - 1;
        }
        return year;
}
Beispiel #4
0
int32_t JapaneseCalendar::getDefaultDayInMonth(int32_t month) 
{
  UErrorCode status  = U_ZERO_ERROR;
  int32_t era = internalGetEra();
  computeFields(status); // slow
  int32_t year = getGregorianYear();
  int32_t day = GregorianCalendar::getDefaultDayInMonth(month);
  
  if(year == kEraInfo[era].year) {
    if(month == (kEraInfo[era].month-1)) {
      return kEraInfo[era].day;
    }
  }

  return day;
}
Beispiel #5
0
int32_t JapaneseCalendar::getDefaultMonthInYear(int32_t eyear) 
{
    int32_t era = internalGetEra();
    // TODO do we assume we can trust 'era'?  What if it is denormalized?

    int32_t month = 0;

    // Find out if we are at the edge of an era

    if(eyear == kEraInfo[era].year) {
        // Yes, we're in the first year of this era.
        return kEraInfo[era].month-1;
    }

    return month;
}
Beispiel #6
0
int32_t JapaneseCalendar::getDefaultMonthInYear() 
{
  UErrorCode status  = U_ZERO_ERROR;
  int32_t era = internalGetEra();
  computeFields(status); // slow
  int32_t year = getGregorianYear();
  // TODO do we assume we can trust 'era'?  What if it is denormalized?

  int32_t month = GregorianCalendar::getDefaultMonthInYear();

  // Find out if we are at the edge of an era

  if(year == kEraInfo[era].year) {
    // Yes, we're in the first year of this era.
    return kEraInfo[era].month-1;
  }

  return month;
}
Beispiel #7
0
void BuddhistCalendar::add(UCalendarDateFields field, int32_t amount, UErrorCode& status)
{
    if (U_FAILURE(status)) 
        return;

    if (amount == 0) 
        return;   // Do nothing!
    
    if(field == UCAL_YEAR /* || field == UCAL_YEAR_WOY */) {
        int32_t year = internalGet(field);
        int32_t era = internalGetEra();

        year += amount;
        
        set(field,year);
        pinDayOfMonth();
    } else {
      GregorianCalendar::add(field,amount,status);
    }
}