2012-10-08 13 views
7

Ich muss überprüfen, ob das ausgewählte Datum von einem Datepicker nicht an einem Wochenende ist. Die Funktion muss überprüfen, ob das neue Startdatum ein Wochenende ist. Außerdem müssen Tage zum Startdatum hinzugefügt werden, wenn ein Wochenende eintritt.Ermitteln, ob begindate ist Wochenende

-Code sollte wie folgt sein:

int startday = Datepicker1.SelectedDate; 
if (startdate = weekendday, startdate++) 
{ 
startdate++ //or if a sunday +2 
} 
else 
{ 
return startdate 
} 

Vielen Dank für Ihre Hilfe.

+1

dieser Code kompiliert nicht einmal – jeroenh

+1

Ich weiß, es kompiliert es nicht nur gibt Ihnen eine Richtung whitch, wie ich gehen möchte. – Dave

+0

Bitte geben Sie zumindest ein funktionierendes Codebeispiel an, um zu zeigen, dass Sie sich in dieser Frage etwas Mühe gegeben haben. – jeroenh

Antwort

23
if (startdate.DayOfWeek == DayOfWeek.Saturday) 
    startdate = startdate.AddDays(2); 
else if (startdate.DayOfWeek == DayOfWeek.Sunday) 
    startdate = startdate.AddDays(1); 
+2

DateTime tun unveränderlich. startdate.AddDays (2) wird nichts tun. –

+0

Danke @Dmitry! Korrigiert. – M4N

0

Werfen Sie einen Blick auf DateTime.DayOfWeek dokumentiert here.

while(startday.DayOfWeek == DayOfWeek.Saturday 
     || startday.DayOfWeek == DayOfWeek.Sunday) 
{ 
    startday = startday.AddDays(1); 
} 
0

Werfen Sie einen Blick auf die DateTime.DayOfWeek Eigenschaft - es wird Ihnen den Tag der Woche, an dem Ihr Datetime-Objekt fällt.

4

Mit der Eigenschaft DayOfWeek können Sie explizit nach Wochenendtagen suchen. Etwas wie das:

if ((startDate.DayOfWeek == DayOfWeek.Saturday) || 
    (startDate.DayOfWeek == DayOfWeek.Sunday)) 

Natürlich ist das ein bisschen lang für eine bedingte. Abstrahiert es zu einem Helfer-Methode macht es ein wenig sauberer:

private bool IsWeekend(DateTime date) 
{ 
    return (date.DayOfWeek == DayOfWeek.Saturday) || 
      (date.DayOfWeek == DayOfWeek.Sunday) 
} 

Um wie folgt zu verwenden:

if (IsWeekend(startDate)) 

Oder vielleicht ein wenig sauberer, könnten Sie eine Erweiterungsmethode für DateTime schreiben:

public static bool IsWeekend(this DateTime date) 
{ 
    return (date.DayOfWeek == DayOfWeek.Saturday) || 
      (date.DayOfWeek == DayOfWeek.Sunday) 
} 

Welche würden Sie wie folgt verwenden:

if (startDate.IsWeekend()) 
Verwandte Themen