我使用以下代码将我的区域性更改为.Net3.5中的persianculture:
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
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);有人知道这个异常抛出的原因吗?
感谢您能提供的任何帮助。
发布于 2012-07-09 20:24:12
尝试使用:typeof(DateTimeFormatInfo).GetProperty("Calendar"....)
DateTimeFormatInfo有一个日历属性(大写C)。
希望这能帮上忙
小谢。
https://stackoverflow.com/questions/11394259
复制相似问题