2009-07-07 12 views

Antwort

2

Schauen Sie diese an:

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

Die letzte Hälfte der Methode kann ersetzt werden mit 'return (finiDate.Su btract (tmpDate) .Tage + 1 - excludedDates.Where (o => o> = tmpDate && o <= finiDate) .Count()); '- das sind die gesamten Tage abzüglich der ausgeschlossenen Tage im Bereich. –

0

Nicht so weit, wie ich weiß, aber es wird nicht zu schwer, mit einem zu kommen.

Angenommen, Samstag und Sonntag sind aus, berechnen Sie die Anzahl der Tage im Monat, durchlaufen Sie die Daten, subtrahieren Sie die Anzahl der Tage im Monat, wenn das aktuelle Datum Sonntag oder Samstag ist oder mit dem Wert im Ferien-Array übereinstimmt .

Verwandte Themen