Torna al Thread
/// <summary>
/// Restituisce la data del lunedì del numero di settimana voluto
/// Es. FirstDateOfWeek(2013, 5, CalendarWeekRule.FirstFourDayWeek)
/// </summary>
public static DateTime FirstDateOfWeek(int year, int weekNum, CalendarWeekRule rule)
{
DateTime jan1 = new DateTime(year, 1, 1);
int daysOffset = DayOfWeek.Monday - jan1.DayOfWeek;
DateTime firstMonday = jan1.AddDays(daysOffset);
int firstWeek = Utility.WeekOfYearISO8601(firstMonday);
if (firstWeek <= 1)
{
weekNum--;
}
return firstMonday.AddDays(weekNum * 7).Date;
}
public static int WeekOfYearISO8601(DateTime date)
{
var day = (int)CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(date);
return CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(date.AddDays(4 - (day == 0 ? 7 : day)), CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}