C# - 检查给定日期是否是一个月的第五周?

Big*_*ile 1 .net c# datetime date

我对如何检查某个特定日期是否是一个月内第五次出现的那一天感到困惑.例如,以下是一周中的某些天,每月出现5次:

  • Thursday 29th March 2018
  • Friday 30th March 2018
  • Saturday 31st March 2018
  • Saturday 29th April 2018

我想要一个将返回的方法,true或者false如果给定的日期日是一个月的第五周.

我已尝试过此问题的以下代码,但此方法仅返回开始第五周周期的第一个日期.

 public DateTime? FifthDay(DayOfWeek dayOfWeek, byte monthNum, int year)
 {
      var searchDate = new DateTime(year, monthNum, 1);
      var weekDay = searchDate.DayOfWeek;

      if (weekDay == dayOfWeek)
      {
          searchDate = searchDate.AddDays(28);
      }

      for (DateTime d = searchDate; d < d.AddDays(7); d = d.AddDays(1))
      {
          if (d.DayOfWeek == dayOfWeek)
          {
              searchDate = searchDate.AddDays(28);
              break;
          }
       }

       if (searchDate.Month == monthNum)
          return searchDate;

      return null;
  }
Run Code Online (Sandbox Code Playgroud)

谢谢

Net*_*age 5

是否有超过28日的任何日期是该周工作日的第五次出现?

public static bool IsFifthWeek(DateTime d) => d.Day > 28;
Run Code Online (Sandbox Code Playgroud)