usando System.Globalization
public int CalculaSemana(DateTime elDia) {
CultureInfo CI= new CultureInfo("es-ES");
Calendar CAL = CI.Calendar;
CalendarWeekRule CWR = CalendarWeekRule.FirstDay;
DayOfWeek DOW = DayOfWeek.Monday; // Define el primer día de la semana
return CAL.GetWeekOfYear(elDia, CWR, DOW);
}
Sin embargo no cumple el estandar ISO8601 por un bug.
Pero puedes rascar más para obtener la solución en blogs.msdn.com/shawnste/archive/2006/01/24/517178.aspx
saludos
Edito: el método te da el nº de la semana del año, pero ahora veo que preguntas otra cosa. Le daré un par de vueltas más ...