我想在2017年10月20日之前7天前获取约会,不包括周末。如果2017年10月20日是星期五,7天前意味着2017年10月11日。对该问题的查询如何?
期望的结果是:
2017-10-19
2017-10-18
2017-10-17
2017-10-16
2017-10-13
2017-10-12
2017-10-11
答案 0 :(得分:1)
您可以尝试检查所需的时间段,以确定其排除日期。 例如,我们需要从今天到7天前的一天。 X(发现日期)= Y(现在日期) - Z(7天,前期)。 然后我们尝试检查这个时期Z日[从10月12日到10月19日]。结果我们发现了2天,并从Y天减少了这一天。
对于linq我可以编写这个函数:
private DateTime GetBeforeDateExcludeWeekends(DateTime FromDate, int Period)
{
DateTime tillBeforeDate = FromDate.Subtract(TimeSpan.FromDays(Period));
var weekendDayCnt =
Enumerable.Range(0, (FromDate - tillBeforeDate).Days + 1).Select(d => tillBeforeDate.AddDays(d))
.Where(day => day.DayOfWeek == DayOfWeek.Saturday || day.DayOfWeek == DayOfWeek.Sunday)
.Count();
return FromDate.Subtract(TimeSpan.FromDays(Period + weekendDayCnt));
}
抱歉我的英语不好。 =)