Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在公差范围内比较两次是否相等?_C++_Windows_Time_Timer - Fatal编程技术网

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

C++ 在公差范围内比较两次是否相等?,c++,windows,time,timer,C++,Windows,Time,Timer,我有一个MFC应用程序,希望在指定的时间调用某个方法。我将使用tm结构的向量指定时间,该向量已填充小时-分钟和秒。可能每次我都需要存储一个布尔值,以指示是否在指定的时间调用了该方法。我有一个计时器,每50毫秒响一次 在MFC中,时间不能保证在指定的时间间隔内结束。我希望确保即使关闭几秒钟,也会调用该方法。我的应用程序目前不需要精确的计时(尽管如果有一个简单的解决方案,我愿意接受)。我目前的想法是允许一些滑动,这样我允许时间等于+/-几秒钟。这看起来是实现这一目标的合理方式吗 我想检查两次是否在一

我有一个MFC应用程序,希望在指定的时间调用某个方法。我将使用tm结构的向量指定时间,该向量已填充小时-分钟和秒。可能每次我都需要存储一个布尔值,以指示是否在指定的时间调用了该方法。我有一个计时器,每50毫秒响一次

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

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

更新

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

您需要使用来获取时间
time\u 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
}
struct-tm预期的\u-tm;
struct tm实际_tm;
//把那些tms设置成什么
时间\u t预期时间=mktime(&expected\u tm);
time\u t actual\u time=mktime(&actual\u tm);
if(abs(预期时间-实际时间)<5)//用于5s公差
{
//好
}
其他的
{
//坏的
}
您需要使用来获取时间
time\u 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
}
struct-tm预期的\u-tm;
struct tm实际_tm;
//把那些tms设置成什么
时间\u t预期时间=mktime(&expected\u tm);
time\u t actual\u time=mktime(&actual\u tm);
if(abs(预期时间-实际时间)<5)//用于5s公差
{
//好
}
其他的
{
//坏的
}

我喜欢这个,我目前唯一的犹豫是它对日期敏感,而不仅仅是时间。因此,我必须使预期时间的日期始终与实际时间的日期相同。实际上,它可能不会出现,因为应用程序通常会在两天之间关闭。虽然从概念上讲,我仍然想知道如何实现日期独立性。我想我可以将struct tm上的年、月和日设置为相同的。根据你的回答,我决定创建一个时间向量,而不是struct tm的向量,但如果回到struct tm,我看起来可以很容易地设置日期。另一件事是,我希望它是预期的时间或更长的时间。如果可能的话,这实际上会尝试在预期时间前5秒开始。我喜欢这样,我现在唯一的犹豫是它对日期敏感,而不仅仅是时间。因此,我必须使预期时间的日期始终与实际时间的日期相同。实际上,它可能不会出现,因为应用程序通常会在两天之间关闭。虽然从概念上讲,我仍然想知道如何实现日期独立性。我想我可以将struct tm上的年、月和日设置为相同的。根据你的回答,我决定创建一个时间向量,而不是struct tm的向量,但如果回到struct tm,我看起来可以很容易地设置日期。另一件事是,我希望它是预期的时间或更长的时间。如果可能,这将实际尝试在预期时间前5秒启动。