представьте, что у меня есть свойство с именем NextSend
, представляющее DateTime
значение
4/11/2011 10:30:00 AM - Monday
. Допустим, у меня есть расписание, которое нужно отправлять каждую неделю на определенный день (Monday)
в этом случае, поэтому, чтобы выяснить следующий недельный график, я нашел решение, в котором я должен проверять каждый следующий день до совпадения DayOfWeek
с specific day
в графике.
4/
17 / 2011 10:30:00 AM - Monday
Есть ли какой-либо другой лучший способ преодолеть проверку названия дня на каждый следующий день?
здесьмоя упомянутая логика:
int nowYear = DateTime.Now.Year;
int nowMonth = DateTime.Now.Month;
int nowDay = DateTime.Now.Day;
int scheduleHour = this.Schedule.Time.Value.Hour;
int scheduleMinute = this.Schedule.Time.Value.Minute;
int scheduleSecond = this.Schedule.Time.Value.Second;
int scheduleDay = -1;
if(this.Schedule.Day.HasValue)
scheduleDay= this.Schedule.Day.Value;
switch (type)
{
case Schedule.ScheduleType.Weekly:
bool founded = false;
while (!founded)
{
//Check if last day of the current month
if (DateTime.DaysInMonth(nowYear, nowMonth) == nowDay)
{
//last day at this year, then move to next year
if (nowMonth == 12)
{
nowYear++;
nowMonth = 1;
nowDay = 1;
}
//its the end of a month then Move to next month
else
{
nowMonth++;
nowDay = 1;
}
}
//Get new proposed date
newNextSend = new DateTime(nowYear, nowMonth, nowDay, scheduleHour, scheduleMinute, scheduleSecond);
//Check if Next week schedule founded with specific day name
if (newNextSend.DayOfWeek ==
(DayOfWeek)Enum.Parse(typeof(DayOfWeek), Schedule.daysCalendar[scheduleDay - 1]))
{
founded = true;
}
else
nowDay++;
}
break;
}