Fix Getting Max Japanese Era (#21087)
authorTarek Mahmoud Sayed <tarekms@microsoft.com>
Mon, 19 Nov 2018 20:50:33 +0000 (12:50 -0800)
committerGitHub <noreply@github.com>
Mon, 19 Nov 2018 20:50:33 +0000 (12:50 -0800)
We were using the ICU API ucal_getLimit and askin gto get the maximum value of the Japanese eras. it looks this API is just return the era matching the current system clock which prevent returning any future defined era in the system (which ICU 63.1 can support with some environment variable).
We raised the issue to the ICU owners but would be better just to get the era of Gregorian year 9999 which always should return the max era anyway.

src/corefx/System.Globalization.Native/calendarData.cpp

index 4943607..5a834e7 100644 (file)
@@ -581,7 +581,8 @@ extern "C" int32_t GlobalizationNative_GetLatestJapaneseEra()
     if (U_FAILURE(err))
         return 0;
 
-    int32_t ret = ucal_getLimit(pCal, UCAL_ERA, UCAL_MAXIMUM, &err);
+    ucal_set(pCal, UCAL_EXTENDED_YEAR, 9999);
+    int32_t ret = ucal_get(pCal, UCAL_ERA, &err);
 
     return U_SUCCESS(err) ? ret : 0;
 }