.net - 如何在某些文化中获取一年中的第几周?

标签 .net calendar gregorian-calendar persian

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

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

当当前文化为 fa-IR(波斯语)时,日历为 GregorianCalendarweek 值为 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/

相关文章:

c# - 如何从偶尔发出非常慢请求的 IEnumerable 中有效地跳过项目?

c# - 在 .NET C# 中截断整个单词的字符串

javascript - 如何在 Angular 引导日历(mwl.calendar)中绑定(bind)年/月/周/日的点击

java - 在 Java 中询问公历一天中的小时数

java - 有没有办法在 Java 中向 GregorianCalendar 添加方法?

c# - ASP.NET 从 bin 文件夹加载非托管 dll

c# - Quartz.net JobStoreTX 作业保存问题

ios - Apple 使用什么公式来计算日历中事件的文本和背景颜色?

c# - 修复 SubSonic 2.2 日历,当控件不可见时如何获取 RegisterClientScriptIninclude 调用以进行渲染?

java - 为什么在 UTC 中将 HOUR_OF_DAY 设置为 0 时 GregorianCalendar 会更改日期?