private static EraInfo[]? IcuGetJapaneseEras() { if (GlobalizationMode.Invariant) { return(null); } Debug.Assert(!GlobalizationMode.UseNls); string[]? eraNames; if (!CalendarData.EnumCalendarInfo("ja-JP", CalendarId.JAPAN, CalendarDataType.EraNames, out eraNames)) { return(null); } List <EraInfo> eras = new List <EraInfo>(); int lastMaxYear = GregorianCalendar.MaxYear; int latestEra = Interop.Globalization.GetLatestJapaneseEra(); for (int i = latestEra; i >= 0; i--) { DateTime dt; if (!GetJapaneseEraStartDate(i, out dt)) { return(null); } if (dt < s_calendarMinValue) { // only populate the Eras that are valid JapaneseCalendar date times break; } eras.Add(new EraInfo(i, dt.Year, dt.Month, dt.Day, dt.Year - 1, 1, lastMaxYear - dt.Year + 1, eraNames ![i], GetAbbreviatedEraName(eraNames, i), ""));
private static EraInfo[]? GetJapaneseEras() { if (GlobalizationMode.Invariant) { return(null); } string[] eraNames; if (!CalendarData.EnumCalendarInfo("ja-JP", CalendarId.JAPAN, CalendarDataType.EraNames, out eraNames)) { return(null); } string[] abbrevEnglishEraNames; if (!CalendarData.EnumCalendarInfo("en", CalendarId.JAPAN, CalendarDataType.AbbrevEraNames, out abbrevEnglishEraNames)) { return(null); } List <EraInfo> eras = new List <EraInfo>(); int lastMaxYear = GregorianCalendar.MaxYear; int latestEra = Interop.Globalization.GetLatestJapaneseEra(); for (int i = latestEra; i >= 0; i--) { DateTime dt; if (!GetJapaneseEraStartDate(i, out dt)) { return(null); } if (dt < s_calendarMinValue) { // only populate the Eras that are valid JapaneseCalendar date times break; } eras.Add(new EraInfo(i, dt.Year, dt.Month, dt.Day, dt.Year - 1, 1, lastMaxYear - dt.Year + 1, eraNames[i], GetAbbreviatedEraName(eraNames, i), abbrevEnglishEraNames[i])); lastMaxYear = dt.Year; } // remap the Era numbers, now that we know how many there will be for (int i = 0; i < eras.Count; i++) { eras[i].era = eras.Count - i; } return(eras.ToArray()); }