C# 获取c中两个日期之间的周范围#
我有一个表单,用户可以在其中输入起始日期和截止日期,提交表单时,我将生成一个excel文件,其中包含指定起始日期内的周数 例如,如果用户输入: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) {
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点