c# - 从日期范围中删除周末

标签 c#

我有一个天数范围,我需要确定周末是否在此范围内。如果是这样,我将 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/

相关文章:

c# - C# 中的 String.Replace(char, char) 方法

C# - 如何测试一个实例是否是其类型的默认值

c# - 一个页面只能有一个服务器端表单标签。 ASP.NET 中的表单错误

c# - 哪个 LINQ 表达式更好?

c# - Json.Net 中的私有(private)二传手

c# - 使用运算符 "="线程安全地复制整个 Queue<T> (C#)

c# - 如何在winforms中定期自动备份MySql数据库?

c# - 如何测试变量是否属于 C# 中的变量类型?

c# - 使用 [Authorize] 集成测试 Web Api

c# - TFS API 获取删除文件 - 更新到新版本后的不同行为(从 14xx 到 16xx)