0

嘿,感谢您的加入。我只是想说,如果有人以前遇到过这个问题,我会道歉。

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

我对这个程序的意图是打印出两个时间之间的经过时间,格式为 24 小时。

截至目前,我想我只是想将经过的第一个和第二个“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;
    }
4

2 回答 2

2

不要考虑小时、分钟和秒之间的差异。将两个时间都转换为自午夜以来的秒数,然后计算它们之间的差异。然后转换回 hh:mm:ss。

顺便说一句:time.h中有一些结构和函数可以提供帮助。

于 2014-08-13T11:16:11.653 回答
0

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

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

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

long deference = fabs(seconds1 - seconds2);

然后将尊重转换回 h:m:s 格式,例如;

int hours = deference / 60 / 60;

int minutes = (deference / 60) % 60;

int seconds = deference % 60;

于 2014-08-13T12:49:00.847 回答