public static DateTime GetStartOfYearWeek(int year, int weekOfYear, CultureInfo culture, CalendarWeekRule weekRule, DayOfWeek firstDayOfWeek, WeekOfYearRuleKind weekOfYearRuleKind) { culture.ShouldNotBeNull("culture"); weekOfYear.ShouldBePositive("weekOfYear"); DateTime dateTime = new DateTime(year, 1, 1).AddDays(weekOfYear * TimeSpec.DaysPerWeek); int currentYear; int currentWeek; GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, weekOfYearRuleKind, out currentYear, out currentWeek); // end date of week while(currentWeek != weekOfYear) { dateTime = dateTime.AddDays(-1); GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, weekOfYearRuleKind, out currentYear, out currentWeek); } // end of previous week while(currentWeek == weekOfYear) { dateTime = dateTime.AddDays(-1); GetWeekOfYear(dateTime, culture, weekRule, firstDayOfWeek, weekOfYearRuleKind, out currentYear, out currentWeek); } return dateTime.AddDays(1); }