Regelmäßige Arbeitstage in einem bestimmten Zeitraum zählen

8

brauche Hilfe. Ich muss regelmäßige Arbeitstage für einen bestimmten Zeitraum zählen, zum Beispiel in unserem Land, wir haben 5 reguläre Arbeitstage von Montag bis Freitag, dann muss ich im Code Samstage und Sonntage ausschließen, wenn ich sie auf meinen Berechnungen verwende.

Ich brauche einen ähnlichen Algorithmus in C #:

%Vor%

Ich weiß, mein Entwurf ist weit weg :(. Vielen Dank im Voraus. =)

PS: Jungs, stimme bitte die beste / schnellste / effizienteste Antwort unten ab. Danke =)

    
CSharpNoob 14.09.2010, 12:34
quelle

8 Antworten

18

Sehen Sie sich dieses Beispiel für Code Project an, das eine sehr effiziente Methode verwendet, bei der es keine gibt Schleifen;)

Es benutzt diesen Algorithmus:

  
  1. Berechnen Sie die Anzahl der Zeiträume in Wochen. Nennen Sie es, W.
  2.   
  3. Ziehen Sie die erste Woche von der Anzahl der Wochen ab. W = W-1
  4.   
  5. Multiplizieren Sie die Anzahl der Wochen mit der Anzahl der Arbeitstage pro   Woche. Nennen Sie es, D.
  6.   
  7. Ermitteln Sie die Feiertage während der angegebenen Zeitspanne. Nennen Sie es, H.
  8.   
  9. Berechnen Sie die Tage in der ersten Woche. Nennen Sie es, SD.
  10.   
  11. Berechnen Sie die Tage in der letzten Woche. Nennen Sie es, ED.
  12.   
  13. Fassen Sie alle Tage zusammen. BD = D + SD + ED · H.
  14.   
    
w69rdy 14.09.2010, 12:57
quelle
4

Einzeiler!

%Vor%

Oder effizienter:

%Vor%     
Jan Jongboom 14.09.2010 12:40
quelle
4

Ich habe einen Typ-Extender geschrieben, mit dem ich Wochentage zu einem bestimmten Datum hinzufügen (oder subtrahieren) kann. Vielleicht wird dir das helfen. Funktioniert großartig, also stimme bitte für meinen Beitrag ab, wenn dir das weitergeholfen hat.

%Vor%     
Brad 14.09.2010 13:17
quelle
2

Nicht sehr schnell, aber das wird den Trick machen:

%Vor%     
Steven 14.09.2010 12:40
quelle
2

Sie könnten versuchen, die Tage einfach zu zählen. Wenn dies normalerweise für Zeiträume wie Monate und nicht Jahre gemacht wird und nicht wiederholt aufgerufen wird, wird dies kein Leistungseinbruch sein, um es einfach zu gehen.

%Vor%     
Brendan Enrick 14.09.2010 12:40
quelle
1

Sie könnten es mit einer Zeitlinien-Hilfsklasse machen - diese Klasse erlaubt auch andere Intervalle:

%Vor%

Um Ihr Problem zu lösen, können Sie Folgendes tun:

%Vor%

Diese Zeitlinienklasse kann für jede kontinuierliche Zeitlinie eines beliebigen Intervalls verwendet werden.

    
AxelEckenberger 14.09.2010 13:08
quelle
0

Einfache Methode, um Arbeitstage zu bekommen:

%Vor%     
jlafay 14.09.2010 12:51
quelle
0
%Vor%     
Amala Ratchagar 20.03.2012 15:04
quelle

Tags und Links