Мне нужно рассчитать количество рабочих дат, исключая праздничные дни между каждым интервалом старта и остановки. В моем приложении есть кнопка для запуска и остановки. Мне удалось получить число дат между первой датой начала и датой последней остановки, но мне нужно также удалить интервалы между каждой датой остановки и датой начала. Любая помощь будет цениться.
Я создал этот метод для подсчета количества дней:
public int ElapseDays(string caseNo )
{
int count = 0;
int weekEndsCount;
Boolean excludeWeekends = true;
using (var db = new EMSDEntities())
{
var q = (from a in db.SY_HOLIDAYS
orderby a.HLD_DATE
select new HolidayListViewModel
{
HolidayDate = a.HLD_DATE,
}).ToList();
var startDate = DateTime.Parse("01/07/2019");
var StopDate = DateTime.Parse("08/07/2019");
for (DateTime index = startDate; index < StopDate; index = index.AddDays(1))
{
if (excludeWeekends && index.DayOfWeek != DayOfWeek.Sunday && index.DayOfWeek != DayOfWeek.Saturday)
{
bool excluded = false;
for (int i = 0; i < q.Count; i++)
{
if (index.Date.CompareTo(q[i].HolidayDate) == 0)
{
excluded = true;
break;
}
}
if (!excluded)
{
count++;
}
}
}
weekEndsCount = count;
}
return weekEndsCount;
}
Это дает мне o / p: 6, после удаления субботы и воскресенья
Ожидаемый результат
<!DOCTYPE html>
<html>
<body>
<h2>Basic HTML Table</h2>
<table style="width:100%">
<tr>
<th>start_date</th>
<th>end_date</th>
</tr>
<tr>
<td>01/07/2019</td>
<td>03/07/2019</td>
</tr>
<tr>
<td>05/07/2019</td>
<td>08/07/2019</td>
</tr>
</table>
</body>
</html>
Ожидаемое о / п: 5