2010-01-30 2 views
7

Id хотел сравнить дату, чтобы увидеть, если это до субботы, как так:DateTime DayOfWeek Сравнение

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

Там, кажется, нет никакого способа сделать это.

Есть ли способ?

Заранее спасибо

+0

Можете ли вы не использовать для сравнения и сравнения? – stusmith

ответ

11

Почему не это?

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

Или еще лучше:

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

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

Я вижу, что я делаю неправильно. Мне не нужно DateTime до DayOfWeek. Silly me :) Спасибо за помощь – Greycrow

+0

Я только что разместил на своем блоге (не похоже, как ответ здесь) два моих любимых пользовательских метода расширения In и Between. Иногда мне кажется, что я трачу слишком много времени, пытаясь сделать мой код похожим на документ. http://www.josheinstein.com/blog/index.php/2010/01/in-between – Josh

+0

Это странно ... в истории редактирования он показывает мне редактирование материала DayOfWeek ... все, что я сделал в моем редактировании, было изменение || to &&. – Josh

0

Попробуйте это:

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

DayOfWeek является перечисление начиная с воскресенья, как 0 и субботу, как последний элемент, следовательно, 6 в целочисленных терминах. Подумайте об этом при сравнении.

1

Если вы предпочитаете делать сравнения, а не проверки списка, вы также можете сделать это:

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

Из MSDN:

Значение констант в DayOfWeek перечисления в пределах от DayOfWeek.Sunday to DayOfWeek.Сегодня. Если лить в целое число, его значение колеблется от нуля (что указывает на DayOfWeek.Sunday) на шесть (что указывает на DayOfWeek.Saturday).

Таким образом, вы можете использовать больше и меньше операторов для своих расчетов.

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