예제 #1
0
        private DateTime FindNextRelevantDate(DateTime datetime)
        {
            var relevantDateTime = new DateTime();

            day   = datetime.Day;
            month = datetime.Month;
            year  = datetime.Year;
            var  maxDay   = Days.Max();
            var  maxMonth = Months.Max();
            var  maxYear  = Years.Max();
            var  maxDate  = new DateTime(maxYear, maxMonth, maxDay).Date;
            bool added    = false;

            while (datetime.Date != maxDate)
            {
                if (DaysOfWeek.Contains((int)datetime.DayOfWeek))
                {
                    relevantDateTime = datetime;
                    break;
                }
                else
                {
                    added = false;
                }
                AddNext(Days, ref day, ref added);
                var monthAdded = AddNext(Months, ref month, ref added);
                if (monthAdded)
                {
                    day = GetClosestDay(datetime, year, month);
                }
                AddNext(Years, ref year, ref added);
                datetime = new DateTime(year, month, day,
                                        datetime.Hour, datetime.Minute, datetime.Second, datetime.Millisecond);
            }
            return(relevantDateTime);
        }