两次以24小时格式的经过时间hh:mm:ss

时间:2014-08-13 11:09:32

标签: c++ time strtok elapsed

嘿谢谢你。我只是不想说如果有人之前遇到过这个问题,我会道歉。

我花了几个小时搜索论坛和谷歌搜索类似的问题,但到目前为止没有运气。

我打算用这个程序打印两次24小时格式之间的经过时间。

到目前为止,我认为我只是把头转过来将第1和第2次“hh”转换为正确的24次,但却无法理解如何做分钟和秒。

我非常感谢任何指导,这将非常有帮助。欢呼声。

    int main()
    {
        char time1[ 48 ] = "14:48:34";
        char time2[ 48 ] = "02:18:19";

        int hour1;
        int min1;
        int sec1;

        int hour2;
        int min2;
        int sec2;

        int seconds;
        int temp;

        //time1
        hour1 = atoi( strtok( time1, ":" ) );
        min1 = atoi( strtok( NULL, ":" ) );
        sec1 = atoi( strtok( NULL, ":" ) );

        //time2
        hour2 = atoi( strtok( time2, ":" ) );
        min2 = atoi( strtok( NULL, ":" ) );
        sec2 = atoi( strtok( NULL, ":" ) );

        seconds = hour1 * 60 * 60; //convert hour to seconds
        ...

        system("PAUSE");
        return 0;
    }

2 个答案:

答案 0 :(得分:2)

不要在小时,分钟和秒之间取得差异。从午夜开始将这两个时间转换为秒,并取出它们之间的差异。然后转换回hh:mm:ss。

顺便说一下:time.h中的结构和功能可以提供帮助。

答案 1 :(得分:0)

假设时间是在同一天(同一天),解决问题的最佳方法是将时间转换为午夜格式的秒数,如:

long seconds1 = (hours1 * 60 * 60) + (minutes1 * 60) + seconds1;

long seconds2 = (hours2 * 60 * 60) + (minutes2 * 60) + seconds2;

long deference = fabs(seconds1 - seconds2);

然后将deference转换回h:m:s格式,如;

int hours = deference / 60 / 60;

int minutes = (deference / 60) % 60;

int seconds = deference % 60;