在容差范围内比较两次是否相等?

时间:2011-10-03 23:25:09

标签: c++ windows time timer

我有一个MFC应用程序,我希望在指定的时间调用某个方法。我将通过使用tm结构的向量来指定时间,该结构具有小时分钟和第二个填充。可能我可能需要每次都存储一个布尔值,以指示是否在指定时间调用该方法。我有一个定时器,每隔50ms就会熄灭一次。

在MFC中,不保证时间以指定的间隔熄灭。我想确保即使关闭几秒钟也会调用该方法。我的应用程序目前不需要精确的计时(尽管如果有一个简单的解决方案,我会对它开放)。我目前关于如何做到这一点的想法是允许一些滑点,以便我允许时间等于+/-几秒钟。这似乎是实现这一目标的合理方式吗?

我想检查在一定的秒容差范围内两次是否相等。在c ++中,最好的方法是什么?我可以访问CTime对象和/或struct tm对象(以及可能的其他窗口时间数据结构)

更新

我猜在秒数接近分钟或小时边界的情况下实际上增加了复杂性。我不能只比较秒。

1 个答案:

答案 0 :(得分:7)

您需要使用mktime来获取time_ttime_t通常是自1970年初以来的秒数,所以你不必担心2:10:59 vs 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
}