我希望找到一种方法来在我的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()
{
???
}
谢谢。
答案 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);
}