Exemplo n.º 1
0
        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());
        }