unção que formata a diferença horári

Estou tentando criar uma função que compare uma data com a hora atual e retorne uma string bem formatad
Eu escrevi algum código às pressas e funciona, mas estou tentando encontrar uma maneira mais eficiente de fazê-lo. Aqui está o meu código:

    function _formatDate($dateStr)
    {
    $timestr = "";
    $t= time() - strtotime($dateStr);
    if($t < 60) {
        $timestr = "{$t} seconds ago";
    }
    elseif ($t <120) {
        $timestr = "about a minute ago";
    }
    elseif ($t < 3600) {
        $minute = floor($t/60);
        $timestr = "{$minute} minutes ago";
    }
    elseif ($t < 7200) {
        $timestr = " about an hour ago";
    }
    elseif ($t < 86400) {
        $hour = floor($t/3600);
        $timestr = "{$hour} hours ago";
    }
    elseif ($t < 172800) {
        $timestr = "a day ago";
    }
    elseif ($t < 2592000) {
        $day = floor($t/86400);
        $timestr = "{$day} days ago";
    }
    elseif ($t < 5184000){
        $timestr = "about a month ago";
    }
    else {
        $month = floor($t/2592000);
        $timestr = "{$month} months ago";
    }
    return $timestr;
}

questionAnswers(2)

yourAnswerToTheQuestion