01.
public
static
DateTime FirstDateOfWeekISO8601(
int
year,
int
weekOfYear)
02.
{
03.
DateTime jan1 =
new
DateTime(year, 1, 1);
04.
int
daysOffset = DayOfWeek.Thursday - jan1.DayOfWeek;
05.
06.
DateTime firstThursday = jan1.AddDays(daysOffset);
07.
var cal = CultureInfo.CurrentCulture.Calendar;
08.
int
firstWeek = cal.GetWeekOfYear(firstThursday, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
09.
10.
var weekNum = weekOfYear;
11.
if
(firstWeek <= 1)
12.
{
13.
weekNum -= 1;
14.
}
15.
var result = firstThursday.AddDays(weekNum * 7);
16.
return
result.AddDays(-3);
17.
}