我想获得一年中的第几周(在当前文化中),所以我这样做了:
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, CalendarWeekRule.FirstDay,
DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek);
它给出了正确的答案 (13)。
我检查了文化的日历是波斯语:
var persianCultures = CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(x => x.Calendar is PersianCalendar).ToList();
但是没有文化。
但我需要这种文化,因为我认为检查日历是否为公历然后使用波斯语是不好的,如果您有更好的想法或对此有所了解,请告诉我。
(据我所知,公历很旧,如果我没记错的话,上面发生的事情(公历)是错误的。它应该与波斯历类似。)
最佳答案
http://www.codeproject.com/KB/dotnet/PersianCulture.aspx
总之,这是 .NET 框架的限制,但可以通过反射来解决此问题。
关于.net - 如何在某些文化中获取一年中的第几周?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320698/