PHP

Format Duration in Seconds

admin by @admin ADMIN
4d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Render a number of seconds as a human-friendly duration like "1h 23m 45s" — automatically trimming leading zero units. Handy for elapsed-time displays in dashboards.
PHP
Raw
<?php
function formatDuration(int $seconds): string {
    if ($seconds < 0) return '-' . formatDuration(-$seconds);
    if ($seconds === 0) return '0s';

    $units = ['d' => 86400, 'h' => 3600, 'm' => 60, 's' => 1];
    $parts = [];
    foreach ($units as $label => $size) {
        if ($seconds >= $size) {
            $n        = intdiv($seconds, $size);
            $seconds %= $size;
            $parts[]  = $n . $label;
        }
    }
    return implode(' ', $parts);
}

echo formatDuration(75);          // 1m 15s
echo formatDuration(3725);        // 1h 2m 5s
echo formatDuration(90000);       // 1d 1h
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.