Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取c中两个日期之间的周范围#_C#_Asp.net_Datetime - Fatal编程技术网

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

C# 获取c中两个日期之间的周范围#,c#,asp.net,datetime,C#,Asp.net,Datetime,我有一个表单,用户可以在其中输入起始日期和截止日期,提交表单时,我将生成一个excel文件,其中包含指定起始日期内的周数 例如,如果用户输入:2018年8月1日-2018年8月15日 excel文件将包含以下列: -2018年1月8日至2018年7月8日 public static IEnumerable<Tuple<DateTime, DateTime>> Split(DateTime start, DateTime end, int chunk) {

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

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

-
2018年1月8日至2018年7月8日

    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));
    }
-
2018年8月8日至2018年8月14日

-
2018年8月15日至2018年8月21日

    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));
    }
如何实现按周划分日期范围

谢谢你的帮助

使用System.IO;
using System.IO;
using System;

class Program
{
    static void Main()
    {
        DateTime fromDate = new DateTime(2018,8,1);
        DateTime toDate = new DateTime(2018,8,15);
        Console.WriteLine("From: "+fromDate.ToString("dd/MM/yyyy"));
        Console.WriteLine("To  : "+toDate.ToString("dd/MM/yyyy"));

        DateTime startDate = fromDate;

        do
        {
            Console.WriteLine(startDate.ToString("dd/MM/yyyy")+"-"+startDate.AddDays(6).ToString("dd/MM/yyyy"));
            startDate = startDate.AddDays(7);
        }
        while(startDate < toDate.AddDays(1));
    }
}
使用制度; 班级计划 { 静态void Main() { DateTime fromDate=新的日期时间(2018,8,1); DateTime toDate=新的日期时间(2018,8,15); Console.WriteLine(“From:”+fromDate.ToString(“dd/MM/yyyy”)); Console.WriteLine(“To:”+toDate.ToString(“dd/MM/yyyy”)); DateTime startDate=fromDate; 做 { Console.WriteLine(startDate.ToString(“dd/MM/yyyy”)+“-”+startDate.AddDays(6.ToString(“dd/MM/yyyy”)); startDate=startDate.AddDays(7); } 而(开始日期<今天添加日期(1)); } }


do{}while()
while(){}
将是相同的)

我的想法是:你将
chunkDay
累积到开始日期(在你的情况下,从1到7是6天),直到日期结束。小提琴的工作原理是:

它返回上一周作为您的要求
2018年8月15日至2018年8月21日

    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));
    }
我有输出

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

到目前为止,你尝试了什么?那么你的一周过去了8天?@TimSchmelter我很想用这个链接的例子:但是我没有设法得到两个日期之间的一周,因为这个例子只是为了一个星期year@Sora1,2,3,4,5,6,7,8-哦8?这样想吧:你第一个系列的第一天是星期三,第二个系列的第一天是。。。周四?很好,那么2018年8月15日发生了什么事?我的意思是,如果用户没有输入完整的周范围,您希望发生什么?我如何计算区块?或者它总是7?这取决于你的要求-从1到7是6天。。。该方法接收
chunk
将其实现为IEnumerable是一个很好的方法,我的意思是用户可能会设置起始日期:
2018年8月1日
和结束日期
2018年8月3日
显示的是
2018年8月1日-2018年8月7日
,所以chunk是6或7,是这种情况吗?@Sora:请看我答案中的输入和输出。或者你可以试着用小提琴来了解。应该是6点