2011-10-03 94 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