Datetime 从下周开始获取周一和周五的日期

Datetime 从下周开始获取周一和周五的日期,datetime,c#-4.0,Datetime,C# 4.0,我用下面的方法来计算下星期一和星期五的日期 例如,今天是2017年1月6日。如果我运行它,我希望得到以下结果: 如果我在本周早些时候运行该方法,该方法效果很好,但是如果我像星期五或星期六那样晚些时候运行,它将返回两周后的星期一和星期五日期(而不是下周) 例如,今天(6号星期五)运行它,我会得到以下结果: 方法如下: public static DateTime NextWeekRange(DateTime start, DayOfWeek day) { var add_days = ((

我用下面的方法来计算下星期一和星期五的日期

例如,今天是2017年1月6日。如果我运行它,我希望得到以下结果:

如果我在本周早些时候运行该方法,该方法效果很好,但是如果我像星期五或星期六那样晚些时候运行,它将返回两周后的星期一和星期五日期(而不是下周)

例如,今天(6号星期五)运行它,我会得到以下结果:

方法如下:

public static DateTime NextWeekRange(DateTime start, DayOfWeek day)
{
    var add_days = ((int)day - (int)start.DayOfWeek + 7) % 7;
    return start.AddDays(add_days);
}
我这样称呼它:

var monday = NextWeekRange(DateTime.Today.AddDays(i_today), DayOfWeek.Monday);
var friday = NextWeekRange(DateTime.Today.AddDays(i_today + 4), DayOfWeek.Friday);
我不太确定我做错了什么,所以另一双眼睛会有帮助的


谢谢

在您的最后一个代码块中,
i_today
的值是多少?原则是测试您的当前日期:发生3种情况:1-如果当前日期为“星期一”,则星期五的日期自动为星期一+4天。Exp(2017年1月9日==“星期一”)2017年1月9日+4天=2017年1月13日==“星期五”)2-如果当前日期等于星期五,则相同原则。在这种情况下,星期一的日期是星期五的日期+3天。Exp(2017年9月13日==星期五)2017年9月13日+3天=2017年9月16日==星期一3-如果当前日期不适用于(1或2),则在当前日期上加一天。然后我们重新开始测试。
DateTime MyDate = DateTime.Now;
        DateTime NextMondayDate;
        DateTime NextFridayDate;
        Boolean Test = true;
        while (Test)
        {
            if (MyDate.DayOfWeek.ToString().ToUpper() == "MONDAY")
            {
                NextMondayDate = MyDate;
                NextFridayDate = MyDate.AddDays(4);
                Test = false;
            }

            else if (MyDate.DayOfWeek.ToString().ToUpper() == "FRIDAY")
            {
                NextFridayDate = MyDate;
                NextMondayDate = MyDate.AddDays(3);
                Test = false;
            }
            else
            {
                MyDate = MyDate.AddDays(1);
            } 

        }
var monday = NextWeekRange(DateTime.Today.AddDays(i_today), DayOfWeek.Monday);
var friday = NextWeekRange(DateTime.Today.AddDays(i_today + 4), DayOfWeek.Friday);
DateTime MyDate = DateTime.Now;
        DateTime NextMondayDate;
        DateTime NextFridayDate;
        Boolean Test = true;
        while (Test)
        {
            if (MyDate.DayOfWeek.ToString().ToUpper() == "MONDAY")
            {
                NextMondayDate = MyDate;
                NextFridayDate = MyDate.AddDays(4);
                Test = false;
            }

            else if (MyDate.DayOfWeek.ToString().ToUpper() == "FRIDAY")
            {
                NextFridayDate = MyDate;
                NextMondayDate = MyDate.AddDays(3);
                Test = false;
            }
            else
            {
                MyDate = MyDate.AddDays(1);
            } 

        }