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

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 a typed object.
*/
interface TimeParts {
    weeks: number;
    days: number;
    hours: number;
    minutes: number;
    seconds: number;
}

function convertSeconds(totalSeconds: number): TimeParts {
    const SECS_PER_MIN: number  = 60;
    const SECS_PER_HOUR: number = 60 * SECS_PER_MIN;
    const SECS_PER_DAY: number  = 24 * SECS_PER_HOUR;
    const SECS_PER_WEEK: number = 7  * SECS_PER_DAY;

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

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

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

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

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

const seconds: number = 1_000_000;

const result: TimeParts = 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 May 20 by avibootz

Related questions

...