У меня есть требование, когда мне нужно работать с полем даты, поэтому требование - это что-то вроде этого
Я назову это поле как минимально возможная дата
-
Добавить +1 к дате
-
Если минимальная возможная дата выпадает на выходные (Сб или Солнце) после добавления 1 дня, отобразите следующий рабочий день в понедельник
-
Если минимальная возможная дата выпадает на Праздник, отобразите следующий рабочий день. (Праздники 1.1, 1.5, 3.10, 25.12, 26.12)
-
Если минимальная возможная дата выпадает на выходные (Сб или Солнце) после добавления 1 дня, а на следующий день после этого - выходной день, то следующий рабочий день. Например: после +1 дня, если минимальный день - суббота, нам нужно будет показать понедельник. Но если в понедельник бывает Праздник, тогда мы должны отображать вторник.
Я попытался решить проблему выше, имея несколько случаев if и else, но просто интересно, есть ли какой-либо общий и изящный способ сделать это?
Я пробовал
var Holidays = new List<DateTime>();
Holidays.Add(new DateTime(DateTime.Now.Year,1,1));
Holidays.Add(new DateTime(DateTime.Now.Year,1,5));
Holidays.Add(new DateTime(DateTime.Now.Year,3,10));
Holidays.Add(new DateTime(DateTime.Now.Year,12,25));
if(date.DayOfWeek === DayOfWeek.Saturday || date.DayOfWeek === DayOfWeek.Sunday)
{
//Logic to add +1 and again some logic to check for weekends and weekdays
}
else if(holidays.Contain(date))
{
//Logic to add +1 and again some logic to check for weekends and weekdays
}