从日期范围中删除周末

我有一系列的日子需要确定周末是否在这个范围内。如果是这样,我将在最终范围内添加 2 天(周一至周日,将其更改为周一至周三。(基于用户选择的天数,例如 5)


我已经找到了一种解析日子的方法(不确定这是否是最佳实践)并且不确定如何继续。迄今为止:


////TODO Refactor to new class

DateTime startingDate = DateTime.Parse("07/25/2018");//TODO Insert variable from poted form 

DateTime endingDate = DateTime.Parse("07/08/2018");//TODO Insert variable from posted form


 var days=  Enumerable.Range(0, 1 + endingDate.Subtract(startingDate).Days)

                .Select(offset => startingDate.AddDays(offset))

                .ToList();

在我看来,我需要像下面的伪代码那样做:


if day.contains dayOfWeek.Saturday ||Or dayofWeek.Friday {Add.Days(2)}

但我不知道如何。


海绵宝宝撒
浏览 247回答 3
3回答

一只甜甜圈

第一个你计算所有的周末天数。然后,将结果添加到开始日期中。这是我的解决方案。希望能帮到你,朋友!static IEnumerable<DateTime> GetDaysBetween(DateTime start, DateTime end)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (DateTime i = start; i < end; i = i.AddDays(1))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; yield return i;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }DateTime startingDate = DateTime.Parse("07/25/2018");//TODO Insert variable from poted form&nbsp;var numOfWeekends = GetDaysBetween(startingDate, startingDate.AddDays(7))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Where(d => d.DayOfWeek == DayOfWeek.Saturday || d.DayOfWeek == DayOfWeek.Sunday).Count();startingDate = startingDate.AddDays(numOfWeekends);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Console.WriteLine(startingDate);

慕少森

我并没有真正理解附加部分,但是此代码将为您提供一个没有任何星期日或星期六的列表:DateTime startingDate = DateTime.Parse("07/25/2018");//TODO Insert variable from poted form&nbsp;DateTime endingDate = DateTime.Parse("07/08/2018");//TODO Insert variable from posted formList<DateTime> dates = new List<DateTime>();for (DateTime dt = startingDate; dt <= endingDate; dt = dt.AddDays(1))&nbsp; &nbsp; if (dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday)&nbsp; &nbsp; &nbsp; &nbsp; dates.Add(dt);如果需要,您还可以添加计数器:DateTime startingDate = DateTime.Parse("07/25/2018");//TODO Insert variable from poted form&nbsp;DateTime endingDate = DateTime.Parse("07/08/2018");//TODO Insert variable from posted formList<DateTime> dates = new List<DateTime>();int couter = 0;for (DateTime dt = startingDate; dt <= endingDate; dt = dt.AddDays(1)){&nbsp; &nbsp; if (dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday)&nbsp; &nbsp; &nbsp; &nbsp; dates.Add(dt);&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; counter++;}或者别的什么...
打开App,查看更多内容
随时随地看视频慕课网APP