Round Timestamp To Nearest Time With PHP

19th March 2010 - 1 minute read time

If you want to create a "rounded" time stamp, for example, to the nearest 15 minutes use this as a reference:

function roundTime($amount, $units = 'm', $time = null)
{
    if (is_null($time)) {
        $time = time();
    }
    
    if ($amount == 0) {
        $amount = 1;
    }
    
    switch ($units){ 
        case 'm':        
            $roundBy = 60 * $amount;
            break;
        case 'h':
            $time = $time + 60 * 60 * $amount;        
            $roundBy = 60 * 60 * $amount;
            break;
        case 'd':
            $time = $time + 60 * 60 * 24 * $amount;
            $roundBy = 60 * 60 * 24 * $amount;
            break;
    }

    return round($time / $roundBy) * $roundBy;
}

echo "\n";
echo date('r', roundTime(15, 'm'));
echo "\n";
echo date('r', roundTime(2, 'h'));
echo "\n";
echo date('r', roundTime(3, 'd'));
echo "\n";
echo date('r', roundTime(-3, 'd'));
echo "\n";

Add new comment

The content of this field is kept private and will not be shown publicly.