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

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 an associative array with each component.
*/
function convertSeconds(int $totalSeconds): array
{
    $SECS_PER_MIN  = 60;
    $SECS_PER_HOUR = 60 * $SECS_PER_MIN;
    $SECS_PER_DAY  = 24 * $SECS_PER_HOUR;
    $SECS_PER_WEEK = 7  * $SECS_PER_DAY;

    // Compute each unit using integer division and modulo
    $weeks = intdiv($totalSeconds, $SECS_PER_WEEK);
    $totalSeconds %= $SECS_PER_WEEK;

    $days = intdiv($totalSeconds, $SECS_PER_DAY);
    $totalSeconds %= $SECS_PER_DAY;

    $hours = intdiv($totalSeconds, $SECS_PER_HOUR);
    $totalSeconds %= $SECS_PER_HOUR;

    $minutes = intdiv($totalSeconds, $SECS_PER_MIN);
    $seconds = $totalSeconds % $SECS_PER_MIN;

    return [
        'weeks'   => $weeks,
        'days'    => $days,
        'hours'   => $hours,
        'minutes' => $minutes,
        'seconds' => $seconds
    ];
}

$seconds = 1_000_000;

$result = convertSeconds($seconds);

echo $result['weeks']   . " weeks, "
   .  $result['days']    . " days, "
   .  $result['hours']   . " hours, "
   .  $result['minutes'] . " minutes, "
   .  $result['seconds'] . " seconds\n";



/*
run:

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

*/

 



answered 11 hours ago by avibootz

Related questions

1 answer 212 views
...