Reputation: 947
Im trying to get the next five weekdays and im stuck.
Ive started like this:
List<DateTime> allWeekEndsInOneYear = new List<DateTime>();
DateTime sDate = DateTime.Now;
DateTime eDate = DateTime.Now.AddYears(1);
TimeSpan diff = eDate - sDate;
int days = diff.Days;
for (var i = 0; i <= days; i++)
{
var testDate = sDate.AddDays(i);
switch (testDate.DayOfWeek)
{
case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
allWeekEndsInOneYear.Add(testDate);
break;
}
}
List<DateTime> daysToMark = new List<DateTime>();
DateTime startDate = DateTime.Now;
DateTime endDate = DateTime.Now.AddDays(5);
Now I need to fill daysToMark with the next 5 days excluding the weekeds (the ones in allWeekEndsInOneYear). Any help is very appreciated.
Upvotes: 1
Views: 3841
Reputation: 1135
This will give you the next five days that are not a Saturday or Sunday.
var nextFiveWeekDays = new List<DateTime>();
var testDate = DateTime.Now.Date;
while (nextFiveWeekDays.Count()<5)
{
if (testDate.DayOfWeek != DayOfWeek.Saturday &&
testDate.DayOfWeek != DayOfWeek.Sunday)
nextFiveWeekDays.Add(testDate);
testDate = testDate.AddDays(1);
}
Upvotes: 2
Reputation: 236228
You can add other days (which are not weekends) on default case of switch:
for (var i = 0; i <= days; i++)
{
var testDate = sDate.AddDays(i);
switch (testDate.DayOfWeek)
{
case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
allWeekEndsInOneYear.Add(testDate);
break;
default:
daysToMark.Add(testDate); // this is a workday
break;
}
}
Also you don't need to calculate days count and use for
loop. while(testDate <= eDate)
will do the job:
var testDate = DateTime.Now;
while (testDate <= eDate)
{
switch (testDate.DayOfWeek)
{
case DayOfWeek.Saturday:
case DayOfWeek.Sunday:
allWeekEndsInOneYear.Add(testDate);
break;
default:
daysToMark.Add(testDate); // this is a workday
break;
}
testDate = testDate.AddDays(1);
}
Upvotes: 3