首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Globalization.DateTimeFormatInfo.calendar原因引发异常

System.Globalization.DateTimeFormatInfo.calendar原因引发异常
EN

Stack Overflow用户
提问于 2012-07-09 19:36:39
回答 1查看 295关注 0票数 3

我使用以下代码将我的区域性更改为.Net3.5中的persianculture:

代码语言:javascript
复制
if (CultureInfo.CurrentCulture.ToString() == "fa-IR")
        {
            CultureInfo persianCalture = new CultureInfo("fa-IR");
            DateTimeFormatInfo info = persianCalture.DateTimeFormat;
            info.AbbreviatedDayNames = new string[] { "  ی  ", "  د  ", "  س  ", "  چ  ", "  پ  ", "  ج  ", "  ش  " };
            info.DayNames = new string[] { "يکشنبه", "دوشنبه", "سه‌شنبه", "چهارشنبه", "پنجشنبه", "جمعه", "شنبه" };
            info.AbbreviatedMonthNames = new string[] { "فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
            info.MonthNames = new string[] { "فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
            info.AbbreviatedMonthGenitiveNames = new string[] { "فروردين", "ارديبهشت", "خرداد", "تير", "مرداد", "شهريور", "مهر", "آبان", "آذر", "دی", "بهمن", "اسفند", "" };
            info.AMDesignator = "صبح";
            info.PMDesignator = "عصر";
            info.ShortDatePattern = "yyyy/MM/dd";
            info.FullDateTimePattern = "yyyy/MM/dd hh:mm:ss";
            info.LongDatePattern = "yyyy MMMM dd dddd";
            info.FirstDayOfWeek = DayOfWeek.Saturday;
            persianCalture.DateTimeFormat = info;
            PersianCalendar PersianCal = new PersianCalendar();

            typeof(DateTimeFormatInfo).GetField("calendar", (System.Reflection.BindingFlags.NonPublic | (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))).SetValue(info, PersianCal);
            typeof(CultureInfo).GetField("calendar", (System.Reflection.BindingFlags.NonPublic | (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))).SetValue(persianCalture, PersianCal);
            Thread.CurrentThread.CurrentCulture = persianCalture;
            Thread.CurrentThread.CurrentUICulture = persianCalture;
            CultureInfo.CurrentCulture.DateTimeFormat = info;
            CultureInfo.CurrentUICulture.DateTimeFormat = info;
        }

但下面这行代码抛出了一个ArgumentNullException:

System.Globalization.DateTimeFormatInfo.calendar

代码语言:javascript
复制
        typeof(DateTimeFormatInfo).GetField("calendar", (System.Reflection.BindingFlags.NonPublic | (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))).SetValue(info, PersianCal);
        typeof(CultureInfo).GetField("calendar", (System.Reflection.BindingFlags.NonPublic | (System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance))).SetValue(persianCalture, PersianCal);

有人知道这个异常抛出的原因吗?

感谢您能提供的任何帮助。

EN

回答 1

Stack Overflow用户

发布于 2012-07-09 20:24:12

尝试使用:typeof(DateTimeFormatInfo).GetProperty("Calendar"....)

DateTimeFormatInfo有一个日历属性(大写C)。

希望这能帮上忙

小谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11394259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档