C# 如何获取两个日期时间选择器之间的所有日期

C# 如何获取两个日期时间选择器之间的所有日期,c#,date,datetimepicker,C#,Date,Datetimepicker,我有两个日期时间选择器,叫做dtpStartDate和dtpEndDate。当用户为dtpStartDate和dtpEndDate选择日期时,我希望获得这两个日期时间选择器值之间的所有工作日期 例如:-如果用户选择dtpStartDate为“30-01-2014”,dtpEndDate为“05-02-2014”,则输出结果应为 30-01-2014 //(Thursday) 31-01-2014 //(Friday) 03-02-2014 //(Monday) 04

我有两个日期时间选择器,叫做dtpStartDate和dtpEndDate。当用户为dtpStartDate和dtpEndDate选择日期时,我希望获得这两个日期时间选择器值之间的所有工作日期

例如:-如果用户选择dtpStartDate为“30-01-2014”,dtpEndDate为“05-02-2014”,则输出结果应为

30-01-2014   //(Thursday)    

31-01-2014   //(Friday) 

03-02-2014   //(Monday) 

04-02-2014   //(Tuesday)

05-02-2014   //(WednesDay)
(2014年2月1日和2014年2月2日不应属于输出,因为这两天是节假日。)


请有人给我一个正确的代码来完成那个任务。谢谢。

您可以通过以下方式实现:

var startDate= dtpStartDate.Date;
var endDate= dtpEndDate.Date;
List<DateTime> workingDays= new List<DateTime>();

for(DateTime counter= startDate; counter<= endDate; counter=counter.AddDays(1))
{
if(counter.DayOfWeek !=DayOfWeek.Saturday && counter.DayOfWeek!=DayOfWeek.Sunday)
   workingDays.Add(counter);
}

// Here you can use the list of working days.
var startDate=dtpStartDate.Date;
var endDate=dtpEndDate.Date;
列表工作日=新列表();

对于(DateTime counter=startDate;counter我尝试了一种使用Linq的解决方案。它是有效的,但我不确定是否有更好的方法

DateTime d1 = new DateTime(2014,1,30);
DateTime d2 = new DateTime(2014,2,5);
int totalDays = (int)(d2 - d1).TotalDays;
List<DateTime> dateStart = new List<DateTime>(){d1};

var result = dateStart.SelectMany(d => Enumerable.Range(0, totalDays)
                      .Select(days => d.AddDays(days))
                      .Where(x => x.DayOfWeek != DayOfWeek.Sunday && 
                                  x.DayOfWeek != DayOfWeek.Saturday));
DateTime d1=新日期时间(2014,1,30);
DateTime d2=新的日期时间(2014,2,5);
整数总天数=(整数)(d2-d1)。总天数;
List dateStart=new List(){d1};
var result=dateStart.SelectMany(d=>Enumerable.Range(0,totalDays)
.选择(天=>d.AddDays(天))
其中(x=>x.DayOfWeek!=DayOfWeek.Sunday&&
x、 星期六);

如果你能展示到目前为止你所做的尝试,这会很有帮助。这是一个非常简单的
for
循环(如果你能很容易地检测到你想要跳过的天数)“那么,国庆假期呢?”史提夫不需要考虑这里的国庆假日。J.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.S.J.