ИЗМЕНЕНО для исправления ошибки, когда запрашиваемый день недели совпадает с днем недели первого месяца.
2-е редактирование, чтобы исправить проблему диска 'от Marc
static DateTime GetDate(int year, int month,
DayOfWeek weekDay, int week)
{
DateTime first = new DateTime(year, month, 1);
int iDow = (int)weekday, iFirst = (int)first.DayOfWeek;
int adjust = (7+iDow-iFirst)%7 - 7;
return first.AddDays(7*week + adjust);
}