如何在WPF中获得/不使用周末的选定月份的总天数?

时间:2017-10-03 00:49:50

标签: c#

我希望找到一种方法来在我的ViewModel中使用LINQ获取周末和没有周末的总天数。例如,九月将在没有周末的情况下计算20天,在周末计划为30天。

我还有一个绑定到MDate的日期选择器,我不知道要开始。

有人可以建议一个简单的方法吗?我只是个业余爱好者。

private DateTime _mDate = DateTime.Now;

public DateTime MDate
{

    get { return _mDate; }
    set
    {
        if (value == _mDate)
        {
            return;
        }  
        else
        {
            _mDate = value;
            OnPropertyChanged("MDate");
            SetDaysInMonth();
        }

    }

}

private void SetDaysInMonth()
        {
            ???
        }

谢谢。

3 个答案:

答案 0 :(得分:3)

DateTime.DayOfWeek方法可以派上用场,this answer by Ani显示如何获得给定月份的所有日期。

借鉴上述答案:

public static List<DateTime> GetDates(int year, int month)
{
   var dates = new List<DateTime>();

   // Loop from the first day of the month until we hit the next month, moving forward a day at a time
   for (var date = new DateTime(year, month, 1); date.Month == month; date = date.AddDays(1))
   {

      if(date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday) 
      {
          dates.Add(date);
      }       
   }

   return dates;
}

答案 1 :(得分:2)

NetworkService

希望你只需要一个月的工作日

答案 2 :(得分:1)

查找月份中的天数,然后枚举并排除星期六和星期日。

private static void SetDaysInMonth(DateTime mDate)
    {
        int numberOfBusinessDays = Enumerable.Range(1, DateTime.DaysInMonth(mDate.Year, mDate.Month))
                                     .Select(day => new DateTime(2017, mDate.Month, day)) 
                                     .Count(d => d.DayOfWeek != DayOfWeek.Sunday && d.DayOfWeek != DayOfWeek.Saturday); 
    }