2013-11-01 85 views
0

我要檢查,如果系統時間爲特定值。如果時間是早上11:15,或者如果時間晚於上午11:00,我可以使用。如何比較兩個不同的時間值

我試圖用

CTime CurrentTime = CTime::GetCurrentTime(); 

但無法弄清楚如何進行比較。

感謝

+0

的CTime具有比較運營商。 http://msdn.microsoft.com/en-us/library/fww7f4h3%28v=vs.90%29.aspx – drescherjm

+0

@drescherjm感謝,我看到了,但我怎麼能解釋,如果時間是上午11點?那麼我想我可以比較當前時間和上午11點。 – user2937812

回答

1

使用一個額外的CTime對象(Here):

CTime CurrentTime=CTime::GetCurrentTime(); 

if(CurrentTime==CTime(2013,11,1,20,15,00)) 
{ 
    // Do that... 
    Sleep(0); 
} 

但它始終是更安全的進行比較的時間跨度:

if((CurrentTime>CTime(2013,11,1,20,15,00))&&(CurrentTime<CTime(2013,11,1,20,15,05))) 
{ 
    // Do that... 
    Sleep(0); 
} 

在這種情況下,我參加了一個跨度5秒。通常情況下,你永遠不會碰到確切的時間,所以第二個例子更安全。

而且至少,回答你的問題,如果你想知道它的過去11

if(CurrentTime>CTime(CurrentTime.GetYear(),CurrentTime.GetMonth(),CurrentTime.GetDay(),11,00,00)) 
{ 
    // Uhh yeah, past 11:00 
} 
+0

不一定是一個跨度,但是那個時候到那個時間之前的事件。即使你有1秒的「epsilon」,仍然有機會在這段時間內處理掉處理器(例如等待軟盤上的I/O操作)。沒有「epsilon」值保證足夠大,因此只需檢測從「之前」標記到「之後」的轉換。 – franji1

+0

謝謝@Martin,是這種24小時格式還是應該單獨檢查am/pm? – user2937812

+0

@ franji1你是完全正確的,我添加了一個樣本。我試圖貼近問題。 –

0

我喜歡的COleDateTime。時間表示爲雙倍。 完整的數字代表了自那以來的日子。分數代表了一天的時間,所以0.5北京時間中午0.75是下午6點...

便於計算和易於比較。還有一個COleDateTimeSpan輔助類。