This doesn't work:
if (d_temp.DayOfWeek.Equals("Sunday"))
because DayOfWeek
is an enum whereas "Sunday"
is a string
. You check it in this way:
if(d_temp.DayOfWeek == DayOfWeek.Sunday)
or (worse):
if(d_temp.DayOfWeek.ToString() == "Sunday")
You could use this method:
public static DateTime GetEndOfMonth(DateTime start, bool workingDaysOnly)
{
int year = start.Year;
int month = start.Month;
int daysInMonth = CultureInfo.CurrentCulture.DateTimeFormat.Calendar.GetDaysInMonth(year, month);
var dt = new DateTime(year, month, daysInMonth);
if (workingDaysOnly)
{
switch (dt.DayOfWeek)
{
case DayOfWeek.Saturday:
dt = dt.AddDays(-1);
break;
case DayOfWeek.Sunday:
dt = dt.AddDays(-2);
break;
default:
break;
}
}
return dt;
}
Usage:
DateTime endOfMonth = GetEndOfMonth(DateTime.Today, true);