Adding Days to a Date but Excluding Weekends

前端 未结 11 2184
萌比男神i
萌比男神i 2020-12-01 15:47

Given a date how can I add a number of days to it, but exclude weekends. For example, given 11/12/2008 (Wednesday) and adding five will result in 11/19/2008 (Wednesday) rath

11条回答
  •  盖世英雄少女心
    2020-12-01 16:24

    public DateTime AddBusinessDays(DateTime dt, int nDays)
    {
        int weeks = nDays / 5;
        nDays %= 5;
        while(dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday)
            dt = dt.AddDays(1);
    
        while (nDays-- > 0)
        {
            dt = dt.AddDays(1);
            if (dt.DayOfWeek == DayOfWeek.Saturday)
                dt = dt.AddDays(2);
        }
        return dt.AddDays(weeks*7);
    }
    

提交回复
热议问题