var lastDay = new DateTime(2009, 12, 31);
var firstDay = new DateTime(2010, 1, 1);
bool isSameWeek = (int)lastDay.DayOfWeek < (int)firstDay.DayOfWeek;
Редактировать: Вы не спрашивали об этом, но я думаю, что более интересно вычислить, попадают ли две даты в одну и ту же неделю. Это также будет работать для вашего вопроса, но это также решает проблему в гораздо более общем смысле. Он работает, вычисляя начало недели для каждой даты, а затем сравнивает, совпадают ли части даты значений DateTime (на случай, если с каждой датой передается разное время).
/// <summary>
/// Determines whether two dates fall in the same week span.
/// </summary>
/// <param name="left">The left DateTime to compare.</param>
/// <param name="right">The right DateTime to compare.</param>
/// <returns>
/// </returns>
public bool IsSameWeek(DateTime left, DateTime right) {
return AreDatePartsEqual(GetStartOfWeek(left), GetStartOfWeek(right));
}
/// <summary>
/// Gets the start of week.
/// </summary>
/// <param name="date">The date.</param>
/// <returns></returns>
public DateTime GetStartOfWeek(DateTime date) {
return date.AddDays(-1 * (int)date.DayOfWeek);
}
/// <summary>
/// Compares two DateTimes using only the Date Part for equality
/// </summary>
/// <param name="left">The left DateTime to compare.</param>
/// <param name="right">The right DateTime to compare.</param>
/// <returns></returns>
public bool AreDatePartsEqual(DateTime left, DateTime right) {
return
left.Day == right.Day &&
left.Month == right.Month &&
left.Year == right.Year;
}