2010-01-30 224 views
7

Id喜歡比較的日期,看它是否是星期六,像這樣前:日期時間DAYOFWEEK比較

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

似乎有沒有辦法做到這一點。

有沒有辦法?

在此先感謝

+0

你不能轉換成int和比較嗎? – stusmith 2010-01-30 22:49:35

回答

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

我明白我做錯了什麼。在DayOfWeek之前我不需要DateTime。傻我:) 感謝您的幫助 – Greycrow 2010-01-30 22:51:34

+0

我剛剛發佈在我的博客(似乎不適合作爲答案)兩個我最喜歡的自定義擴展方法之一和之間。有時候我想我花太多時間試圖讓我的代碼看起來像一個文檔。 http://www.josheinstein.com/blog/index.php/2010/01/in-between – Josh 2010-01-30 22:58:50

+0

這很奇怪......在編輯歷史中,它顯示我編輯DayOfWeek的東西......我所做的所有編輯工作都是改變||至 &&。 – Josh 2010-01-30 23:01:31

0

試試這個:

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

星期幾是開始星期日爲0和週六在整數條件的最後一個元素,因此6枚舉。想一想,比較時。

1

如果你寧願做比較,而不是檢查列表,你也可以這樣做:

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

從MSDN:

的常量在星期幾枚舉值從 範圍DayOfWeek.Sunday到DayOfWeek.Saturday。如果轉換爲整數,其值爲 的值範圍從零(表示DayOfWeek.Sunday)到六個 (表示DayOfWeek.Saturday)。

因此,您還可以使用大於和小於運算符來進行計算。

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