问题描述
|
我想获得一年的一周(以当前的文化),所以我这样做:
var week = CultureInfo.CurrentCulture.Calendar
.GetWeekOfYear(DateTime.Now,CalendarWeekRule.FirstDay,DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek);
当当前的文化是fa-IR
(波斯语)时,日历是GregorianCalendar
,week
值是24(在波斯语中,我们处于第13周)
但是如果我用PersianCalendar对其进行如下测试:
var calendar = new PersianCalendar();
var week = calendar
.GetWeekOfYear(DateTime.Now,DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek);
它给出了一个正确的答案(13)。
我检查过文化的日历是波斯语:
var persianCultures = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(x => x.Calendar is PersianCalendar).ToList();
但是没有文化。
但是我需要这种文化,因为我认为检查日历是否为公历然后使用波斯语不好,如果您有更好的主意或对此有所了解,请告诉我。
(据我所知,公历是古老的,如果我没记错的话,上面(使用Gregorian)发生的事情是错误的。它应该类似于波斯日历。)
解决方法
http://www.codeproject.com/KB/dotnet/PersianCulture.aspx
总而言之,这是.NET框架的局限性,但是可以通过反射来解决。