2011-10-03 91 views
1

我有一個MFC應用程序,我想在指定的時間調用某個方法。我將通過使用具有小時分鐘和秒鐘填充的tm結構向量來指定時間。可能我可能需要爲每次存儲一個布爾值來指示方法是否在指定的時間被調用。我有一個計時器每隔50ms就會關閉一次。比較兩次公差是否相等?

在MFC中,時間不能保證以指定的時間間隔關閉。我想確保即使關閉幾秒鐘也會調用該方法。我的應用程序目前不需要精確的時間安排(儘管如果有簡單的解決方案,我會接受它)。我目前關於如何做到這一點的想法是允許一些滑動,以便讓我的時間等於+/-幾秒鐘。這似乎是一個合理的方式來實現這一目標?

我想檢查兩次是否在一定的容差範圍內相等。在C++中最好的方法是什麼?我有權訪問CTime對象和/或結構TM對象(和潛在的其他窗口時間的數據結構)

UPDATE

我想有在的情況下,實際上是增加了複雜性,其中秒靠近分鐘或小時邊界。我不能只比較秒。

回答

7

您需要使用mktime才能獲得time_ttime_t通常是自1970年初以來的秒數,所以您不必擔心2:10:59和2:11:01。

struct tm expected_tm; 
struct tm actual_tm; 

// set those tms to something 

time_t expected_time = mktime(&expected_tm); 
time_t actual_time = mktime(&actual_tm); 

if (abs(expected_time - actual_time) < 5) // for 5s tolerance 
{ 
    // GOOD 
} 
else 
{ 
    // BAD 
} 
+0

我喜歡這個,我現在唯一的猶豫就是它對日期不敏感,而不僅僅是時間。所以我必須讓預期的時間日期始終與實際時間日期相同。實際上它可能不會出現,因爲應用程序通常會在幾天之內關閉。儘管在概念上我仍然想知道如何實現日期獨立性。 – User

+0

我想我可以設置結構tm的年,月和日是一樣的。根據你的回答,我決定創建一個time_t的向量而不是struct tm的向量,但是如果回到struct tm的話,它看起來像我可以很容易地設置日期。 – User

+0

另一件事是我希望它是預期的時間或更長的時間。如果可能的話,這實際上會嘗試在預期的時間之前5秒開始。 – User