C++ 时间机器无法正确计算经过的时间量

C++ Time machine doesn't calculate amount of time passed correctly

本文关键字:经过 时间 计算 时间机器 C++      更新时间:2023-10-16

在教材《用C++解决问题》中,有一个问题说你有一台时间机器可以向前移动24小时,它希望你使用小时值、分钟值和布尔值输入开始时间和结束时间,布尔值表示时间是上午还是下午,并计算出已经过去了多少分钟。我想用军事时间来做这件事,如果开始时间小于结束时间(即0000和2359的时间返回1439),我可以计算出多少分钟,但我不知道如何做相反的事情。

以下是我目前所拥有的:

#include <iostream>
#include <cmath>
using namespace std;
int timeDifference(int t1, int t2)
{
int t1_mins = (t1 / 100) * 60 + (t1 % 100);
int t2_mins = (t2 / 100) * 60 + (t2 % 100);
return(t2_mins - t1_mins);
}
int main()
{
cout << "The time difference between 0000 and 2359 is " <<
timeDifference(0,2359) << " minutes." << endl;
cout << "The time difference between 2359 and 0001 is " <<
timeDifference(2359,1) << " minutes." << endl;
cout << "The time difference between 2010 and 1000 is " <<
timeDifference(2010,1000) << " minutes." << endl;
cout << "The time difference between 0300 and 1500 is " <<
timeDifference(300,1500) << " minutes." << endl;
}

如有任何帮助,我们将不胜感激!

如果t2小于t1,只需将一整天的分钟数添加到t2即可。

这将导致以下代码:

#include <iostream>
int timeDifference(int t1, int t2)
{
int t1_mins = (t1 / 100) * 60 + (t1 % 100);
int t2_mins = (t2 / 100) * 60 + (t2 % 100);
if ( t2 < t1 )
t2_mins += 24 * 60;
return(t2_mins - t1_mins);
}

std::chrono让事情变得更好。。。

给定24小时时间输入持续时间:

using namespace std::chrono;
minutes timeDifference(minutes t1, minutes t2)
{
if(t2 < t1)
t2 += 24h;
return t2 - t1;
}