2

我想获得一年中的一周(在当前文化中),所以我这样做:

var week = CultureInfo.CurrentCulture.Calendar
           .GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay,
                          DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek);

当前文化为(波斯语)时,fa-IR日历为24(波斯语为第 13 周)GregorianCalendarweek

但如果我用 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();

但没有文化。

但我需要这种文化,因为我认为检查日历是否是公历然后使用波斯语不好,如果您有更好的想法或对此有所了解,请告诉我。

(据我所知,公历很旧,如果我没记错的话,上面发生的事情(使用 Gregorian )是错误的。它应该类似于波斯历。)

4

1 回答 1

3

http://www.codeproject.com/KB/dotnet/PersianCulture.aspx

总而言之,这是 .NET 框架的一个限制,但可以使用反射解决方法。

于 2011-06-12T07:27:48.150 回答