我的StartYear是2009年,FirstDayOfWeek
是星期一,FirstWeekOfYear
是第一整周。
因此,根据2009年日历的上述标准,第1周实际上从第5周开始。
那么我如何使用上述条件获得StartDate年份(FirstDayOfWeek
和FirstWeekOfYear
(日历规则))?它应该是通用的。
答案 0 :(得分:0)
再次更新了代码。
public DateTime GetFirstDayOfFirstWeek(int year, CultureInfo culture)
{
// calc first date of this week
var firstDateOfWeek = new DateTime(year, 1, 10);
while (firstDateOfWeek.DayOfWeek != culture.DateTimeFormat.FirstDayOfWeek)
firstDateOfWeek = firstDateOfWeek.AddDays(-1);
// get current week number
int weekNum = culture.Calendar.GetWeekOfYear(firstDateOfWeek, culture.DateTimeFormat.CalendarWeekRule, culture.DateTimeFormat.FirstDayOfWeek);
// remove all weeks except the first one
return firstDateOfWeek.AddDays(7 - (weekNum * 7));
}
var date = GetFirstDayOfFirstWeek(2009, new CultureInfo("sv-se"));
注意代码:我仍然使用CultureInfo
而不是将规则作为参数。通过这样做,我帮你一个忙:)你应该学习使用.NET中内置的文化功能。它可以帮助您节省大量时间。
(如果您仍然不想使用该文化,只需修改代码)