为了账号安全,请及时绑定邮箱和手机立即绑定

从日期范围中删除周末

从日期范围中删除周末

C#
海绵宝宝撒 2021-10-31 19:42:22
我有一系列的日子需要确定周末是否在这个范围内。如果是这样,我将在最终范围内添加 2 天(周一至周日,将其更改为周一至周三。(基于用户选择的天数,例如 5)我已经找到了一种解析日子的方法(不确定这是否是最佳实践)并且不确定如何继续。迄今为止:////TODO Refactor to new classDateTime 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)}但我不知道如何。
查看完整描述

3 回答

?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

第一个你计算所有的周末天数。然后,将结果添加到开始日期中。这是我的解决方案。希望能帮到你,朋友!


static IEnumerable<DateTime> GetDaysBetween(DateTime start, DateTime end)

        {

            for (DateTime i = start; i < end; i = i.AddDays(1))

            {

                yield return i;

            }

        }


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


var numOfWeekends = GetDaysBetween(startingDate, startingDate.AddDays(7))

            .Where(d => d.DayOfWeek == DayOfWeek.Saturday || d.DayOfWeek == DayOfWeek.Sunday).Count();


startingDate = startingDate.AddDays(numOfWeekends);

            Console.WriteLine(startingDate);


查看完整回答
反对 回复 2021-10-31
?
慕少森

TA贡献2019条经验 获得超9个赞

我并没有真正理解附加部分,但是此代码将为您提供一个没有任何星期日或星期六的列表:


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


List<DateTime> dates = new List<DateTime>();


for (DateTime dt = startingDate; dt <= endingDate; dt = dt.AddDays(1))

    if (dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday)

        dates.Add(dt);

如果需要,您还可以添加计数器:


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


List<DateTime> dates = new List<DateTime>();

int couter = 0;


for (DateTime dt = startingDate; dt <= endingDate; dt = dt.AddDays(1))

{

    if (dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday)

        dates.Add(dt);


    else

        counter++;

}

或者别的什么...


查看完整回答
反对 回复 2021-10-31
  • 3 回答
  • 0 关注
  • 246 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信