BudgetAnalyser.Engine.NewZealandPublicHolidays.DayClosestMondayToHoliday.CalculateDate C# (CSharp) Method

CalculateDate() public method

public CalculateDate ( System.DateTime start, System.DateTime end ) : System.DateTime
start System.DateTime
end System.DateTime
return System.DateTime
            public override DateTime CalculateDate(DateTime start, DateTime end)
            {
                for (var year = start.Year; year <= end.Year; year++)
                {
                    var proposed = new DateTime(year, Month, CloseToDate);
                    switch (proposed.DayOfWeek)
                    {
                        case DayOfWeek.Sunday:
                            proposed = proposed.AddDays(1);
                            break;
                        case DayOfWeek.Monday:
                            break;
                        case DayOfWeek.Tuesday:
                            proposed = proposed.AddDays(-1);
                            break;
                        case DayOfWeek.Wednesday:
                            proposed = proposed.AddDays(-2);
                            break;
                        case DayOfWeek.Thursday:
                            proposed = proposed.AddDays(-3);
                            break;
                        case DayOfWeek.Friday:
                            proposed = proposed.AddDays(3);
                            break;
                        case DayOfWeek.Saturday:
                            proposed = proposed.AddDays(2);
                            break;
                    }

                    if (proposed >= start && proposed <= end)
                    {
                        return proposed;
                    }
                }

                throw new InvalidOperationException(string.Format(CultureInfo.InvariantCulture,
                    "Cannot find a suitable date between {0} and {1}", start, end));
            }
        }
NewZealandPublicHolidays.DayClosestMondayToHoliday