Прошедшее время между двумя временами в 24-часовом формате чч:мм:сс

Эй, спасибо, что заглянули. Я просто не хочу извиняться, если кто-то сталкивался с этим вопросом раньше.

Я часами искал подобные проблемы на форумах и в Google, но пока безуспешно.

Мое намерение для этой программы - распечатать время, прошедшее между двумя временами в 24-часовом формате.

На данный момент я думаю, что только придумал, как преобразовать прошедшее 1-е и 2-е «чч» в правильное 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;
    }

person smuhero    schedule 13.08.2014    source источник
comment
Код больше похож на C, чем на C++.   -  person eerorika    schedule 13.08.2014


Ответы (2)


Не различайте часы, минуты и секунды. Преобразуйте оба времени в секунды с полуночи и возьмите разницу между ними. Затем конвертируйте обратно в чч:мм:сс.

Кстати: в time.h есть структуры и функции, которые могут помочь.

person stefaanv    schedule 13.08.2014
comment
Что вы имели в виду под полуночью? - person smuhero; 13.08.2014
comment
2:20:10 это 7200+1200+10 секунд с полуночи - person stefaanv; 13.08.2014
comment
Я предполагаю, что это домашняя работа, поэтому ему, вероятно, запрещено использовать несамостоятельный код, такой как структура time.h. Другое, что у вас есть мой голос. - person Dima Maligin; 13.08.2014
comment
@DimaMaligin: наверное ты прав, но именно поэтому я дал совет, а не код. Таким образом, с учетом ответов, это должно быть очевидно. - person stefaanv; 13.08.2014
comment
Я трачу часы прошлой ночью на это. нужно было только добавить часы в текущий час1 - час2 внутри условного оператора для создания 24-часового формата. ваше здоровье. - person smuhero; 14.08.2014

Предполагая, что время указано в один и тот же день (одна и та же дата), лучший способ решить вашу проблему - преобразовать время в секунды из формата полуночи, например:

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;

person Dima Maligin    schedule 13.08.2014
comment
это не совсем работает для моей проблемы, но я знаю, в чем проблема сейчас. нужно было установить правильное значение времени, когда пройдет полночь. - person smuhero; 14.08.2014
comment
@smuhero Пока ты это понял. - person Dima Maligin; 14.08.2014