我有两个datepickers。03/05/2017至10/05/2017
使用这两个日期,我想生成每周报告。
结果,我希望:- 03/05/2017-07/05/2017 的一份报告
- 08/05/2017-08/05/2017 的一份报告
应该将一周的最后一天视为星期日。
所以我已经将它们添加到列表
DateTime start = new DateTime(2017, 05, 03);
DateTime end = new DateTime(2017, 05, 10);
if (end < start)
throw new ArgumentException("endDate must be greater than or equal to startDate");
var dates = new List<DateTime>();
for (var dt = start; dt <= end; dt = dt.AddDays(1))
{
dates.Add(dt);
}
现在,我需要以某种方式过滤它们才能检索我上面描述的每周结果,但我失败了。
您有什么想法吗?您认为我的方法错了吗?
您可以使用List<List<DateTime>>
进行此操作,并在您的循环中添加工作日检查:
var dates = new List<List<DateTime>>();
List<DateTime> weekDays = new List<DateTime>();
for(var dt = start; dt<=end;dt=dt.AddDays(1))
{
if(dt.DayOfWeek != DayOfWeek.Sunday || DateTime.Compare(dt,start)==0)
{
weekDays.Add(dt);
}
else
{
weekDays.Add(dt);
dates.Add(weekDays);
weekDays = new List<DateTime>();
}
}
if(weekDays.Count>0)
{
dates.Add(weekDays);
}
您将获得如下列表:
03.05.2017 00:00:00
04.05.2017 00:00:00
05.05.2017 00:00:00
06.05.2017 00:00:00
07.05.2017 00:00:00
08.05.2017 00:00:00
09.05.2017 00:00:00
10.05.2017 00:00:00