.net 在某些文化中,如何获得一年中的一周?
我想获得一年中的一周(在当前文化中),所以我做到了:.net 在某些文化中,如何获得一年中的一周?,.net,calendar,gregorian-calendar,persian,.net,Calendar,Gregorian Calendar,Persian,我想获得一年中的一周(在当前文化中),所以我做到了: var week = CultureInfo.CurrentCulture.Calendar .GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek); 当前区域性为fa-IR(波斯语)时,日历为gregoriacalen
var week = CultureInfo.CurrentCulture.Calendar
.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay,
DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek);
当前区域性为fa-IR
(波斯语)时,日历为gregoriacalendar
,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();
但是没有文化
但我需要这种文化,因为我认为检查日历是否是公历不好,然后使用波斯语,如果你有更好的想法或对此有任何了解,请让我知道
(据我所知,公历很古老,如果我没记错的话,上面发生的事情(公历)是错误的。它应该和波斯历相似。)
总之,这是.NET framework的一个限制,但是可以通过反射解决问题。这很好,但它并不能减少我的
if then else
问题,我不能更改默认日历(因为对其他团队有副作用),但我可以在本地更改它,但在这种情况下,if then else
存在。@Diego Mijelshon,我不知道你为什么把C标签从这个问题中删除,可能是在其他语言中没有这样的问题,也就是波斯日历是针对C++的(我知道gerigorian在C++中是第一个可用的,但是我现在讲的是C),请阅读我的修订意见。C#3.5不存在(您错误地创建了该标记),并且该问题与C#语言无关,而是与.NET framework有关,因此我现在添加了该标记。@Diego Mijelshon,很抱歉,您是对的。