2009-07-07 105 views

回答

2

看看這個:

private int CountWorkDays(DateTime startDate, DateTime endDate, List<DateTime> excludedDates) 
{ 
    int dayCount = 0; 
    int inc = 1; 
    bool endDateIsInPast = startDate > endDate; 
    DateTime tmpDate = startDate; 
    DateTime finiDate = endDate; 

    if(endDateIsInPast) 
    { 
     // Swap dates around 
     tmpDate = endDate; 
     finiDate = startDate; 

     // Set increment value to -1, so it DayCount decrements rather 
     // than increments 
     inc = -1; 
    } 

    while(tmpDate <= finiDate) 
    { 
     if(!excludedDates.Contains(tmpDate)) 
     { 
      dayCount += inc; 
     } 

     // Move onto next day 
     tmpDate = tmpDate.AddDays(1); 
    } 

    return dayCount; 
} 
+0

最後半的方法可以用`return(finiDate.Su btract(tmpDate).Days + 1 - excludedDates.Where(o => o> = tmpDate && o <= finiDate).Count());` - 也就是說,總天數減去範圍中排除的天數。 – 2011-02-02 00:13:17

0

據我所知,並不是很難拿出一個。

假設週六和週日關閉,計算月份中的天數,迭代日期,如果當前日期是星期日或星期六,則減去月份中的天數,或者它與假期數組中的值相匹配。

相關問題