如何检查所选择的两个日期之间是否有星期天下降?

Wan*_*tIt 0 c#

目前我有2个月的日历; 一个用于开始日期,另一个用于结束日期.用户可以选择除星期日之外的任何日期.还有一个按钮,用于检查日期是否有效.如果用户选择了包含星期天的日期范围,则系统不应允许该日期并显示其无效的消息.我们如何使用C#做到这一点?

ang*_*son 5

只需检查选择的前7天.

从选定的第一个日期开始,检查此日期,然后检查下一个日期,并执行以下操作:

  • 如果你最终超过用户选择的结束日期,那么你已经完成了,一切都很好
  • 如果你最后一个星期天,一切都不好

像这样的东西:

for (int index = 0; index < 7; index++)
{
    DateTime dt = startDate.AddDays(index);
    if (dt > endDate)
        return true;
    if (dt.DayOfWeek == DayOfWeek.Sunday)
        return false;
}
Run Code Online (Sandbox Code Playgroud)

请注意,检查用户选择的开始日期和结束日期之间的所有日期没有意义,因为周数是100%重复出现的模式,只需查看选择是否以包含星期日的一周开始.

请注意,正如评论中所提到的,for循环实际上是不必要的.要么我们要到达结束日期,要么我们将在7个日期内找到一个星期日,所以我们可以重写上面的代码:

DateTime dt = startDate;
while (dt <= endDate)
{
    if (dt.DayOfWeek == DayOfWeek.Sunday)
        return false;
    dt = dt.AddDays(1);
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我发现第一个解决方案更容易理解和推理.