2010-01-30 22 views
7

Id como para comparar una fecha para ver si es antes del sábado, así:DateTime DayOfWeek Comparación

 //Check if Saturday YET 
     if (MYWorkDay.DayOfWeek < DateTime.DayOfWeek.Saturday) 
      IGottaWork(); 
     else 
      Party(); 

No parece haber ninguna manera de hacer esto.

¿Hay alguna manera?

Gracias de antemano

+0

¿No puedes convertir a int y comparar? – stusmith

Respuesta

11

¿Por qué no esto?

if (MYWorkDay.DayOfWeek != DayOfWeek.Saturday 
      && MYWorkDay.DayOfWeek != DayOfWeek.Sunday) 
    { 
     IGottaWork(); 
    } 
    else 
     Party(); 

O aún mejor:

List<DayOfWeek> partyDays = new List<DayOfWeek> { 
    DayOfWeek.Saturday, DayOfWeek.Sunday 
}; 

if (partyDays.Contains(MYWorkDay.DayOfWeek)) 
    Party(); 
else 
    IGottaWork(); 
+0

Veo lo que estaba haciendo mal. No necesito DateTime antes del DayOfWeek. Tonto yo :) Gracias por la ayuda – Greycrow

+0

Acabo de publicar en mi blog (no parece apropiado como respuesta aquí) dos de mis métodos de extensión personalizados favoritos en y entre. A veces creo que paso demasiado tiempo intentando que mi código parezca un documento. http://www.josheinstein.com/blog/index.php/2010/01/in-between – Josh

+0

Eso es raro ... en la historia de edición me muestra editando las cosas de DayOfWeek ... todo lo que hice en mi edición fue cambio || a &&. – Josh

0

Prueba esto:

if (new [] {DayOfWeek.Saturday, DayOfWeek.Sunday}.Contains(d.DayOfWeek)) { 
    // party :D 
} else { 
    // work D: 
} 
1

DayOfWeek es una enumeración comenzando con el domingo como 0 y el sábado como el último elemento de ahí 6 en términos de número entero. Piense en eso al comparar.

1

Si prefiere hacer comparaciones en lugar de comprobar una lista, también se puede hacer esto:

if ((MYWorkDay.DayOfWeek.CompareTo(DayOfWeek.Sunday) > 0) && (MYWorkDay.DayOfWeek.CompareTo(DayOfWeek.Saturday) < 0)) 
{ 
     IGottaWork(); 
} 
else 
{ 
     Party(); 
} 
3

De MSDN:

El valor de las constantes en la enumeración DayOfWeek oscila entre DayOfWeek.Sunday to DayOfWeek.Saturday. Si se lanza a un número entero, su valor va desde cero (que indica DayOfWeek.Sunday) hasta seis (que indica DayOfWeek.Saturday).

Por lo tanto, también puede usar operadores mayores o menores que su operador para su cálculo.

//Check if Saturday YET 
if (MYWorkDay.DayOfWeek < DayOfWeek.Saturday && MYWorkDay.DayOfWeek > DayOfWeek.Sunday) 
    IGottaWork(); 
else 
    Party(); 
Cuestiones relacionadas