c++ - 在公差范围内比较两次是否相等?

标签 c++ windows time timer

我有一个 MFC 应用程序,我希望在指定时间调用某个方法。我将使用填充了小时、分钟和秒的 tm 结构 vector 来指定时间。可能我可能需要为每次存储一个 bool 值以指示该方法是否在指定时间被​​调用。我有一个每 50 毫秒关闭一次的计时器。

在 MFC 中,时间不能保证在指定的时间间隔内关闭。我想确保即使关闭几秒钟也能调用该方法。我的应用程序目前不需要精确计时(尽管如果有简单的解决方案,我愿意接受)。我目前关于如何做到这一点的想法是允许一些滑动,这样我就可以让时间等于 +/- 几秒。这看起来是实现这一目标的合理方法吗?

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

更新

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

最佳答案

您需要使用 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
}

关于c++ - 在公差范围内比较两次是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641801/

相关文章:

c++ - ISPC - 我可以将 CPU 线程数限制为 1 吗?

java - 从一种时间格式转换为另一种时间格式

C++ if 语句 : first condition superseding the second - UB or well defined?

c++ - 指向动态数组的 auto_ptr

c++ - 使用 ">"运算符增强语义操作

c++ - ReadDirectoryChangesW 不做任何事情 c++

c++ - 函数重载在运行时如何工作,为什么要重载?

windows - Qt - 在 Windows 上为 Linux 交叉编译

ios - 在 Swift 中获取两个 NSDate() 实例之间的时间间隔时遇到问题

sqlite - SQLite中查询结果行之间的时差:如何?