Frage

Was ist der einfachste Weg, um die Menge an Arbeitstagen seit einem Zeitpunkt zu berechnen? VB.NET bevorzugt, aber C # ist in Ordnung.

Und mit „Arbeitstag“, meine ich alle Tage außer Samstag und Sonntag. Wenn der Algorithmus auch zu berücksichtigen, um eine Liste von spezifischen ‚Ausschluß‘ Daten nehmen kann, die nicht als Arbeitstag zählen sollte, wäre das Soße sein.

Vielen Dank im Voraus für das beigetragen Genie.

War es hilfreich?

Lösung

Dies werde tun, was Sie wollen es. Es soll genug, um konvertieren zu VB.NET, es ist schon zu lange einfach für mich in der Lage sein, es zu tun, aber.

DateTime start = DateTime.Now;
DateTime end = start.AddDays(9);
IEnumerable<DateTime> holidays = new DateTime[0];

// basic data
int days = (int)(end - start).TotalDays;
int weeks = days / 7;

// check for a weekend in a partial week from start.
if (7- (days % 7) <= (int)start.DayOfWeek)
    days--;
if (7- (days % 7) <= (int)start.DayOfWeek)
    days--;

// lose the weekends
days -= weeks * 2;

foreach (DateTime dt in holidays)
{
    if (dt > start && dt < end)
        days--;
}

Andere Tipps

Der einfachste Weg ist wahrscheinlich so etwas wie

DateTime start = new DateTime(2008, 10, 3);
DateTime end = new DateTime(2008, 12, 31);
int workingDays = 0;
while( start < end ) {
  if( start.DayOfWeek != DayOfWeek.Saturday
   && start.DayOfWeek != DayOfWeek.Sunday ) {
      workingDays++;
  }
  start = start.AddDays(1);
}

Es kann nicht die effizienteste sein, aber es für die einfache Überprüfung einer Liste von Feiertagen erlaubt.

Hier ist ein Beispiel von Steves Formel in VB ohne Urlaub Subtraktion:

Function CalcBusinessDays(ByVal DStart As Date, ByVal DEnd As Date) As Decimal

        Dim Days As Decimal = DateDiff(DateInterval.Day, DStart, DEnd)
        Dim Weeks As Integer = Days / 7
        Dim BusinessDays As Decimal = Days - (Weeks * 2)
        Return BusinessDays
        Days = Nothing
        Weeks = Nothing
        BusinessDays = Nothing

End Function

Hier ist ein Verfahren für SQL Server. Es gibt auch eine Vbscript Methode auf der Seite. Nicht genau das, was Sie gefragt, ich weiß.

Wir kombinierten zwei Codeproject Artikel zu einer vollständigen Lösung zu gelangen. Unsere Bibliothek ist nicht genug prägnant als Quellcode zu schreiben, aber ich kann Ihnen zu den beiden Projekten verweisen wir früher zu erreichen, was wir brauchten. Wie immer bei Codeproject Artikel, die Kommentare lesen, kann es in ihnen wichtige Informationen sein.

Die Berechnung Werktagen: http://www.codeproject.com/KB/cs /busdatescalculation.aspx

Eine Alternative Arbeitstag berechnet: http://www.codeproject.com/KB/cs/datetimelib.aspx

Die Berechnung Urlaub: http://www.codeproject.com/KB/dotnet/ HolidayCalculator.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top