Найти все слоты в заданном диапазоне

Как найти все временные интервалы в диапазоне.

От даты 01- Jan -2014 00:00:00 A.M

К дате 15-Oct-2014 00:00:00 P.M

Дата начала мероприятия 03-Jan-2014 10:00 A.M происходит каждые 3 дня, как только 03, 06, 09 и т.д.

Мне нужно рассчитать, как показано ниже , используя С#

03-Jan-2014

06-Jan-2014

09-Jan-2014

12-Jan-2014

и т.д., и т.д.

Как эти вычисления можно сделать в С#? в DB и не удалось проверить Показать следующую дату события

Ответ 1

Как я упоминал в своем комментарии, вы можете использовать метод DateTime.AddDays(), например:

DateTime dt1 = new DateTime(2014, 1, 1);
DateTime dt2 = new DateTime(2014, 10, 15);
DateTime start = new DateTime(2014, 1, 3);

while (start < dt2)
{
    Console.WriteLine(start.ToString("dd-MMM-yyyy"));
    start = start.AddDays(3);
}

Здесь demonstration.

Если вы хотите также показать 1 5-Oct-2014, просто измените условие start < dt2 на start <= dt2

Выход будет:

03-Jan-2014
06-Jan-2014
09-Jan-2014
12-Jan-2014
15-Jan-2014
18-Jan-2014
21-Jan-2014
24-Jan-2014
27-Jan-2014
30-Jan-2014
02-Feb-2014
05-Feb-2014
08-Feb-2014
11-Feb-2014
14-Feb-2014
17-Feb-2014
20-Feb-2014
23-Feb-2014
26-Feb-2014
01-Mar-2014
04-Mar-2014
07-Mar-2014
10-Mar-2014
13-Mar-2014
16-Mar-2014
19-Mar-2014
22-Mar-2014
25-Mar-2014
28-Mar-2014
31-Mar-2014
03-Apr-2014
06-Apr-2014
09-Apr-2014
12-Apr-2014
15-Apr-2014
18-Apr-2014
21-Apr-2014
24-Apr-2014
27-Apr-2014
30-Apr-2014
03-May-2014
06-May-2014
09-May-2014
12-May-2014
15-May-2014
18-May-2014
21-May-2014
24-May-2014
27-May-2014
30-May-2014
02-Jun-2014
05-Jun-2014
08-Jun-2014
11-Jun-2014
14-Jun-2014
17-Jun-2014
20-Jun-2014
23-Jun-2014
26-Jun-2014
29-Jun-2014
02-Jul-2014
05-Jul-2014
08-Jul-2014
11-Jul-2014
14-Jul-2014
17-Jul-2014
20-Jul-2014
23-Jul-2014
26-Jul-2014
29-Jul-2014
01-Aug-2014
04-Aug-2014
07-Aug-2014
10-Aug-2014
13-Aug-2014
16-Aug-2014
19-Aug-2014
22-Aug-2014
25-Aug-2014
28-Aug-2014
31-Aug-2014
03-Sep-2014
06-Sep-2014
09-Sep-2014
12-Sep-2014
15-Sep-2014
18-Sep-2014
21-Sep-2014
24-Sep-2014
27-Sep-2014
30-Sep-2014
03-Oct-2014
06-Oct-2014
09-Oct-2014
12-Oct-2014

Ответ 2

Если вы хотите использовать LINQ, вы можете сделать:

DateTime dtStart = new DateTime(2014, 1, 1);
DateTime dtEnd = new DateTime(2014, 10, 15);

int difference = 3;
List<DateTime> result = new List<DateTime>(new[] { dtStart });
result.AddRange(Enumerable.Range(0, (dtEnd - dtStart).Days / difference)
                           .Select(r => dtStart = dtStart.AddDays(difference)));