How to convert seconds into weeks, days, hours, minutes, and seconds in C++

1 Answer

0 votes
#include <iostream>

/*
Use integer division and modulo:

1 minute = 60 seconds
1 hour = 60 minutes
1 day = 24 hours
1 week = 7 days
*/


/*
    Convert a total number of seconds into weeks, days, hours,
    minutes, and seconds. The function receives the total seconds
    and outputs each component by reference.
*/
void convertSeconds(long long totalSeconds,
                    long long &weeks,
                    long long &days,
                    long long &hours,
                    long long &minutes,
                    long long &seconds)
{
    const long long SECS_PER_MIN  = 60;
    const long long SECS_PER_HOUR = 60 * SECS_PER_MIN;
    const long long SECS_PER_DAY  = 24 * SECS_PER_HOUR;
    const long long SECS_PER_WEEK = 7  * SECS_PER_DAY;

    // Compute each unit using integer division and modulo
    weeks = totalSeconds / SECS_PER_WEEK;
    totalSeconds %= SECS_PER_WEEK;

    days = totalSeconds / SECS_PER_DAY;
    totalSeconds %= SECS_PER_DAY;

    hours = totalSeconds / SECS_PER_HOUR;
    totalSeconds %= SECS_PER_HOUR;

    minutes = totalSeconds / SECS_PER_MIN;
    seconds = totalSeconds % SECS_PER_MIN;
}

int main() {
    long long seconds = 1000000;

    long long w, d, h, m, s;
    convertSeconds(seconds, w, d, h, m, s);

    std::cout << w << " weeks, "
              << d << " days, "
              << h << " hours, "
              << m << " minutes, "
              << s << " seconds\n";
}



/*
run:

1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds

*/

 



answered 17 hours ago by avibootz
edited 17 hours ago by avibootz

Related questions

1 answer 185 views
...