2013-07-09 21 views
-2

我有一個程序,我不需要在星期六運行幾個小時。我如何編碼以檢查當前時間是星期六1800到2100?我有日期時間設定,我想我可以先檢查一下,看看是否每週星期= 6,然後檢查時間,看看它是否在這幾個小時之間,但我想知道是否有人知道更好的方法?如何檢查某一天在C中的時間#

謝謝!

+3

你在找什麼樣的「更好」? (我會明確比較DayOfWeek.Saturday,但除此之外...) –

+0

這是Windows服務嗎? – shahkalpesh

+0

@shahkalpesh:無論它是否是服務都無所謂。看看當天是星期六,然後測試時間是在下午6點到晚上9點之間,而不執行該方法幾乎是這樣做的方法。 – NotMe

回答

5
if ((DateTime.Now.Hour >= 18 && DateTime.Now.Hour <= 21) && DateTime.Now.DayOfWeek == DayOfWeek.Saturday) 
{ 
    //it is between 6 and 9pm on saturday 
} 

,或者我們可以顛倒了整個事情,並檢查是否有任何其他的時間,但這些時間

if (!((DateTime.Now.Hour >= 18 && DateTime.Now.Hour <= 21) && DateTime.Now.DayOfWeek == DayOfWeek.Saturday)) 
{ 
    //it is NOT between 6 and 9pm on saturday 
} 

編輯:,或者如果你想優化這一點,並確保沒有大量的時間用在傳遞檢查,即。通過進入或退出的時間,你可以這樣做:

DateTime dt = DateTime.Now; 

if ((dt.Hour >= 18 && dt.Hour <= 21) && dt.DayOfWeek == DayOfWeek.Saturday) 
{ 
    //it is between 6 and 9pm on saturday 
} 

,或者我們可以顛倒了整個事情,並檢查是否有任何其他的時間,但這些時間

if (!((dt.Hour >= 18 && dt.Hour <= 21) && dt.DayOfWeek == DayOfWeek.Saturday)) 
{ 
    //it is NOT between 6 and 9pm on saturday 
} 
+0

多一點優化,你可以將dayofweek條件與小時條件交換。星期幾條件代表6/7的機會失敗,所以這應該首先檢查(如果這將要檢查很多時間) –

+0

我假設從C++進入C#的權利,左括號和括號深度,但顯然根據C#4.0語言規範,從左到右和深度。 – bizzehdee

+0

這看起來不錯!現在,實際上,我需要從星期六晚上2300到週日0200,所以它會是這樣的: 'code' if(!(time.Hour == 23 && time.DayOfWeek == DayOfWeek.Saturday ))|| (!((time.Hour> = 0 && time.Hour> = 2)&& time.DayOfWeek == DayOfWeek.Sunday)) { //它不在這些時間之間 } 'code' –

0

使用C#

日期時間庫
DateTime date = DateTime.Now; 
TimeSpan startTime = new TimeSpan(18, 00, 00); 
TimeSpan endTime = new TimeSpan(19, 00, 00); 
if (date.DayOfWeek.Equals(DayOfWeek.Saturday) && 
        date.TimeOfDay >= startTime && 
        date.TimeOfDay <= endTime) 
    //Do the operation that you want 
相關問題