diff --git a/icu4c/source/i18n/calendar.cpp b/icu4c/source/i18n/calendar.cpp index cac237d2b67..52fcdb9fa50 100644 --- a/icu4c/source/i18n/calendar.cpp +++ b/icu4c/source/i18n/calendar.cpp @@ -4251,17 +4251,20 @@ int32_t Calendar::internalGetMonth(UErrorCode& status) const { if (U_FAILURE(status)) { return 0; } - if (resolveFields(kMonthPrecedence) == UCAL_MONTH) { - return internalGet(UCAL_MONTH, status); + if (resolveFields(kMonthPrecedence) == UCAL_ORDINAL_MONTH) { + return internalGet(UCAL_ORDINAL_MONTH); } - return internalGet(UCAL_ORDINAL_MONTH, status); + return internalGet(UCAL_MONTH); } -int32_t Calendar::internalGetMonth(int32_t defaultValue, UErrorCode& /* status */) const { - if (resolveFields(kMonthPrecedence) == UCAL_MONTH) { - return internalGet(UCAL_MONTH, defaultValue); +int32_t Calendar::internalGetMonth(int32_t defaultValue, UErrorCode& status) const { + if (U_FAILURE(status)) { + return 0; } - return internalGet(UCAL_ORDINAL_MONTH); + if (resolveFields(kMonthPrecedence) == UCAL_ORDINAL_MONTH) { + return internalGet(UCAL_ORDINAL_MONTH); + } + return internalGet(UCAL_MONTH, defaultValue); } BasicTimeZone* diff --git a/icu4c/source/i18n/chnsecal.cpp b/icu4c/source/i18n/chnsecal.cpp index afb16d3e25a..ff031e7727c 100644 --- a/icu4c/source/i18n/chnsecal.cpp +++ b/icu4c/source/i18n/chnsecal.cpp @@ -1177,10 +1177,14 @@ int32_t ChineseCalendar::internalGetMonth(int32_t defaultValue, UErrorCode& stat if (U_FAILURE(status)) { return 0; } - if (resolveFields(kMonthPrecedence) == UCAL_MONTH) { - return internalGet(UCAL_MONTH, defaultValue); + switch (resolveFields(kMonthPrecedence)) { + case UCAL_MONTH: + return internalGet(UCAL_MONTH); + case UCAL_ORDINAL_MONTH: + return internalGetMonth(status); + default: + return defaultValue; } - return internalGetMonth(status); } ChineseCalendar::Setting ChineseCalendar::getSetting(UErrorCode&) const {