2010-01-30 13 views
7

Id piace paragonare una data per vedere se è prima di Sabato in questo modo:DateTime DayOfWeek Confronto

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

Non sembra esserci alcun modo per fare questo.

C'è un modo?

Grazie in anticipo

+0

Non puoi trasmettere a int e confrontare? – stusmith

risposta

11

Perché no?

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

O ancora meglio:

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

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

Vedo cosa stavo facendo male. Non ho bisogno di DateTime prima di DayOfWeek. Silly me :) Grazie per l'aiuto – Greycrow

+0

Ho appena pubblicato sul mio blog (non mi sembra appropriato come risposta qui) due dei miei metodi di estensione personalizzati preferiti In e Tra. A volte penso di passare troppo tempo a cercare di rendere il mio codice simile a un documento. http://www.josheinstein.com/blog/index.php/2010/01/in-between – Josh

+0

Questo è strano ... nella cronologia delle modifiche mi mostra la modifica della roba DayOfWeek ... tutto ciò che ho fatto nella mia modifica è stato cambiare || a &&. – Josh

0

Prova questa:

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

DayOfWeek è un enum a partire con la Domenica come 0 e Sabato come ultimo elemento da cui 6 in termini di numero intero. Pensa a questo quando paragoni.

1

Se invece volete fare i confronti piuttosto che controllando un elenco, si potrebbe anche fare questo:

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

Da MSDN:

Il valore delle costanti nell'enumerazione DayOfWeek varia da DayOfWeek.Sunday to DayOfWeek.Saturday. Se si esegue il cast su un numero intero, il suo valore varia da zero (che indica DayOfWeek.Sunday) a sei (che indica DayOfWeek.Saturday).

Quindi è possibile utilizzare anche per gli calcoli un numero maggiore o minore di operatori.

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