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

1 Answer

0 votes
#include <stdio.h>

/*
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 through pointer parameters.
*/
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);

    printf("%lld weeks, %lld days, %lld hours, %lld minutes, %lld seconds\n",
           w, d, h, m, s);
}



/*
run:
 
1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds
 
*/
 

 



answered 16 hours ago by avibootz

Related questions

1 answer 138 views
...