Может быть, вы слишком усложняете;взгляните на это:
var startDate = new DateTime(2018, 1, 1);
var endDate = new DateTime(2018, 3, 1);
while ((startDate = startDate.AddMinutes(5)) < endDate)
{
if (startDate.Hour < 8 || startDate.Hour > 17 ||
startDate.DayOfWeek == DayOfWeek.Saturday ||
startDate.DayOfWeek == DayOfWeek.Sunday)
continue;
Console.WriteLine("{0:ddd, MMM dd, yyyy HH:mm}", startDate);
}
Вам просто нужен цикл, увеличивающийся на 5 минут до достижения endDate
;внутри цикла вы пропускаете все значения, которые вам не нужны (выходные и нерабочие часы).
В этом коде я повторно использую startDate
в качестве рабочей переменной, но вы определенно можете создать новую.и прояснить ситуацию.