2012-10-08 14 views
7

Necesito comprobar si la fecha seleccionada de un datepicker no está en un fin de semana. La función debe seguir comprobando si la nueva fecha de inicio es un fin de semana. También necesita agregar días a la fecha de inicio si ocurre un fin de semana.Determinar si begindate es fin de semana

Código debe ser algo como esto:

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

Gracias por su ayuda.

+1

ese código ni siquiera compila – jeroenh

+1

Sé que no compila, simplemente les da a ustedes una dirección hacia donde quiero ir. – Dave

+0

Por favor, al menos proporcione una muestra de código de trabajo para mostrar que ha puesto un poco de esfuerzo en esta pregunta. – jeroenh

Respuesta

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

DateTime is inmutable. startdate.AddDays (2) no hará nada. –

+0

Gracias @Dmitry! Corregido – M4N

0

Echa un vistazo a DateTime.DayOfWeek documentado here.

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

Tome un vistazo a la propiedad DateTime.DayOfWeek - se le dará el día de la semana en que cae el objeto DateTime.

4

Utilizando la propiedad DayOfWeek puede verificar explícitamente los días de fin de semana. Algo como esto:

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

Por supuesto, eso es un poco largo para un condicional. Abstrayéndolo a un método de ayuda hace que sea un poco más limpio:

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

Para usar la siguiente manera:

if (IsWeekend(startDate)) 

O, tal vez un poco más limpio, se podría escribir un método de extensión para DateTime:

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

cual se utilizaría la siguiente manera:

if (startDate.IsWeekend()) 
Cuestiones relacionadas