Вычислить последние 16 дней с текущей даты

У меня есть приложение С# asp.net. Я хочу рассчитать раньше 16 дней, давая текущую дату, это даст 16 последних дней.

Просьба привести пример кода для этого.

Thankx в adavanced.

1 ответ

Этот метод работает:

public static IList<datetime> GetWeekDays(DateTime startDate, DayOfWeek day, int count, bool pastDays, bool includeStartDate)
{
 int start = (int)startDate.DayOfWeek;
 int desired = (int)day;
 int offset;
 int diff = Math.Abs(start - desired);
 if(!includeStartDate && start == desired)
 diff = 7;
 offset = pastDays ? (-1) * (7- diff) : diff;
 int weekDays = pastDays ? (-1) * 7 : 7;
 DateTime firstDay = startDate.AddDays(offset);
 IList<datetime> dates = Enumerable.Range(0, count)
 .Select(i => firstDay.AddDays(i * weekDays))
 .ToList();
 return dates;
}
</datetime></datetime>

Он поддерживает оба направления.

Использование прост:

IList<datetime> past16Wednesdays = GetWeekDays(DateTime.Today, DayOfWeek.Wednesday, 16, true, true);
foreach(DateTime dt in past16Wednesdays)
 Console.WriteLine(dt.ToString("d", CultureInfo.InvariantCulture));
</datetime>

Результат:

11/20/2013
11/13/2013
11/06/2013
10/30/2013
10/23/2013
10/16/2013
10/09/2013
10/02/2013
09/25/2013
09/18/2013
09/11/2013
09/04/2013
08/28/2013
08/21/2013
08/14/2013
08/07/2013

licensed under cc by-sa 3.0 with attribution.