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

1 Answer

0 votes
/*
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 returns each component in an object.
*/
function convertSeconds(totalSeconds) {
    const SECS_PER_MIN  = 60;
    const SECS_PER_HOUR = 60 * SECS_PER_MIN;
    const SECS_PER_DAY  = 24 * SECS_PER_HOUR;
    const SECS_PER_WEEK = 7  * SECS_PER_DAY;

    // Compute each unit using integer division and modulo
    const weeks = Math.floor(totalSeconds / SECS_PER_WEEK);
    totalSeconds %= SECS_PER_WEEK;

    const days = Math.floor(totalSeconds / SECS_PER_DAY);
    totalSeconds %= SECS_PER_DAY;

    const hours = Math.floor(totalSeconds / SECS_PER_HOUR);
    totalSeconds %= SECS_PER_HOUR;

    const minutes = Math.floor(totalSeconds / SECS_PER_MIN);
    const seconds = totalSeconds % SECS_PER_MIN;

    return { weeks, days, hours, minutes, seconds };
}

const seconds = 1_000_000;

const result = convertSeconds(seconds);

console.log(
    `${result.weeks} weeks, ` +
    `${result.days} days, ` +
    `${result.hours} hours, ` +
    `${result.minutes} minutes, ` +
    `${result.seconds} seconds`
);



/*
run:

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

*/

 



answered 16 hours ago by avibootz

Related questions

...