获取c#中两个日期之间的周范围

Sor*_*ora -1 c# asp.net datetime

我有一个表单,用户可以在其中输入起始日期和截止日期,当提交表单时,我将生成一个 excel 文件,其中包含指定的起始日期中的周数范围。

例如,如果用户输入:1/8/2018 - 15/8/2018 excel 文件将包含以下列:

——1/8/2018 to 7/8/2018

——8/8/2018 to 14/8/2018

——15/8/2018 to 21/8/2018

我怎样才能实现按周分割日期范围

感谢任何帮助。

Ant*_*e V 5

我的想法是:您将 a 累积chunkDay到开始日期(在您的情况下,从 1 到 7 是 6 天)直到日期结束。小提琴作品:https : //dotnetfiddle.net/rrN8Yd

它返回上周作为您的要求 15/8/2018 to 21/8/2018

    public static IEnumerable<Tuple<DateTime, DateTime>> Split(DateTime start, DateTime end, int chunk)
    {
        DateTime chunkEnd;
        while ((chunkEnd = start.AddDays(chunk)) < end)
        {
            yield return Tuple.Create(start, chunkEnd);
            start = chunkEnd.AddDays(1);
        }
        yield return Tuple.Create(start, start.AddDays(chunk));
    }
Run Code Online (Sandbox Code Playgroud)

有了这个输入

    foreach( var t in Split(new DateTime(2018,8,1), new DateTime(2018,8,17),6)){
            Console.WriteLine(t.Item1.ToString() + " " + t.Item2.ToString());
        }
Run Code Online (Sandbox Code Playgroud)

我有输出

8/1/2018 12:00:00 AM 8/7/2018 12:00:00 AM
8/8/2018 12:00:00 AM 8/14/2018 12:00:00 AM
8/15/2018 12:00:00 AM 8/21/2018 12:00:00 AM
Run Code Online (Sandbox Code Playgroud)