C ++时间机器不计算正确传递的时间量

时间:2014-02-27 22:13:09

标签: c++

在使用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;
}

任何帮助都表示赞赏,并提前致谢!

2 个答案:

答案 0 :(得分:0)

如果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);
}

答案 1 :(得分:0)

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

给出24小时的输入持续时间:

using namespace std::chrono;

minutes timeDifference(minutes t1, minutes t2)
{
    if(t2 < t1)
        t2 += 24h;

    return t2 - t1;
}