如何过滤日期列表以检索每周报告



我有两个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

最新更新