Need help how to get first date and last date of a week in current month.
Below what I have done so far, but still fall for certain case especially where the start date and end date is sunday:
var givenDate = new DateTime(2018,4,1);
var intervalToStart = givenDate.DayOfWeek - DayOfWeek.Monday;
var startDate = givenDate.AddDays(-intervalToStart);
DateTime endDate;
int intervalToEnd = 0;
if (startDate.Month != givenDate.Month)
startDate = new DateTime(givenDate.Year, givenDate.Month, 1);
var dayOfWeekStartDate = startDate.DayOfWeek.ToString().ToLower();
switch (dayOfWeekStartDate)
{
case "sunday": intervalToEnd = 0;
break;
case "monday": intervalToEnd = 6;
break;
case "tuesday": intervalToEnd = 5;
break;
case "wednesday": intervalToEnd = 4;
break;
case "thursday": intervalToEnd = 3;
break;
case "friday": intervalToEnd = 2;
break;
case "saturday": intervalToEnd = 1;
break;
}
endDate = startDate.AddDays(intervalToEnd);
Console.WriteLine(startDate);
Console.WriteLine(endDate);
Case 1:
Given date: 05 May 2018 (saturday)
First date of week: 01 May 2018 (tuesday)
Last date of week: 06 May 208 (sunday)
Case 2:
Given date: 09 May 2018 (wednesday)
First date of week: 07 May 2018 (monday)
Last date of week: 13 May 2018 (sunday)
Case 3:
Given date: 01 Apr 2018 (sunday)
First date of week: 01 Apr 2018 (sunday)
Last date of week: 01 Apr 2018 (sunday)
case 4:
Given date: 02 June 2018 (saturday)
First date of week: 01 June 2018 (friday)
Last date of week: 03 June 2018 (sunday)
Concept or answer is highly appreciated.
Thank you in advance.