/// <summary> /// Advances to week day. /// </summary> /// <param name="value">The value.</param> /// <param name="weekDay">The week day.</param> /// <returns></returns> public static DateTime AdvanceToWeekDay(this DateTime value, WeekDay weekDay) { if (!weekDay.HasValue()) { throw new ArgumentException("The weekDay has to be set", "weekDay"); } int target = (int)weekDay; int from = (int)value.GetWeekDay(); int offSet = target - from; // check if we have to jump the week if (offSet < 0) { offSet = offSet + 7; } var result = value.AddDays(offSet); return(result); }