我有一个天数范围,我需要确定周末是否在此范围内。如果是这样,我将 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)}
但是我不知道怎么办。
最佳答案
用户提供结束日期和工作日数,这将产生一个包含所需数量的列表
DateTime endingDate = DateTime.ParseExact("07/25/2018","MM/dd/yyyy", System.Globalization.CultureInfo.InvariantCulture);//TODO Insert variable from poted form
int workingDays = 5;
List<DateTime> dates = new List<DateTime>();
DateTime startingDate = endingDate;
while(dates.Count<workingDays)
{
if(startingDate.DayOfWeek != DayOfWeek.Sunday && startingDate.DayOfWeek != DayOfWeek.Saturday)
{
dates.Insert(0, startingDate);
}
startingDate = startingDate.AddDays(-1);
}
输出将是
2018-07-19
2018-07-20
2018-07-23
2018-07-24
2018-07-25
20 个工作日:
01 2018-06-28 Thursday
02 2018-06-29 Friday
03 2018-07-02 Monday
04 2018-07-03 Tuesday
05 2018-07-04 Wednesday
06 2018-07-05 Thursday
07 2018-07-06 Friday
08 2018-07-09 Monday
09 2018-07-10 Tuesday
10 2018-07-11 Wednesday
11 2018-07-12 Thursday
12 2018-07-13 Friday
13 2018-07-16 Monday
14 2018-07-17 Tuesday
15 2018-07-18 Wednesday
16 2018-07-19 Thursday
17 2018-07-20 Friday
18 2018-07-23 Monday
19 2018-07-24 Tuesday
20 2018-07-25 Wednesday
关于c# - 从日期范围中删除周末,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51540322/