Обновил код еще раз.
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.Это поможет вам сэкономить много времени.
(если вы все еще не хотите использовать культуру, просто измените код)