2014-06-24 127 views
3

在我的應用程序(c#)中,我需要將n天添加到今天的日期。我知道我可以使用DateTime.AddDays(n)方法,並且此方法正常工作。但在我的情況下,我只想添加工作日(或僅限「星期一」和「星期五」或任何其他套餐)。c中的日期計算#

也許存在任何默認方法來計算這種類型的邏輯。

測試數據:

Date:Today(24-jun-2014)。
天補充:10
日子類型:營業日(MN-FR)
答:8月2014

+0

,你遍歷要添加檢查對您的枚舉 –

+0

有沒有內置的方法的日子裏,我會創造天的枚舉即可。 SO上有幾個答案來計算工作日。 –

+0

@DStanley,感謝您的評論,但自定義天數(Fr-Sun)呢?也許問題不重複? – jimpanzer

回答

3

你可以使用LINQ:

DayOfWeek[] weekEnd = { DayOfWeek.Saturday, DayOfWeek.Sunday }; 
DateTime end = Enumerable.Range(0, int.MaxValue) 
      .Select(i => DateTime.Today.AddDays(i)) 
      .Where(d => !weekEnd.Contains(d.DayOfWeek)) 
      .Take(10) 
      .Last(); 

但是,它返回07/07,我認爲,因爲它包括今天。我不知道是否有需要。如果您今天不想將Range(0, int.MaxValue)更改爲Range(1, int.MaxValue)

1

我會做這種方式:

public static DateTime AddBusinessDays(this DateTime source, int daysToAdd, params DayOfWeek[] workdays) 
    { 
     if (daysToAdd <= 0) 
      return source; 
     var current = source; 

     while (daysToAdd > 0) 
     { 
      current = current.AddDays(1); 

      if (workdays.Contains(current.DayOfWeek)) 
       daysToAdd--; 
     } 

     return current; 
    }