Simplify code using array
It's hard to suggest simplifications without a greater understanding of the problem being solved.  However, this is perhaps a bit more readable:

$dates = array(
    array('type' =&gt; 'age',        'start' =&gt; $birthday,   'stop' =&gt; 'now' ),
    array('type' =&gt; 'membership', 'start' =&gt; $datejoined, 'stop' =&gt; 'now' ),
    array('type' =&gt; 'promoted',   'start' =&gt; $lastpromo,  'stop' =&gt; 'now' ),
);

foreach($dates as $date)
{
    $start = date_create($date['start']);
    $stop  = date_create($date['stop']);
    $interval = date_diff($start, $stop);

    switch($date['type'])
    {
        case 'age':
            $age = $interval-&gt;format('%y');
            break;

        case 'membership':
            $years      = $interval-&gt;format('%y');
            $months     = $interval-&gt;format('%m');
            $membership = floor(($years*12)+$months);

            if($membership &gt;  1) { $suffix = 'Months'; }
            if($membership == 1) { $suffix = 'Month'; }
            if($membership &lt;  1) { $suffix = 'Month'; $membership = '&lt; 1'; }
            break;

        case 'prompted':
            $years    = $interval-&gt;format('%y');
            $months   = $interval-&gt;format('%m');
            $test     = $interval-&gt;format('%a');
            $promoted = floor(($years*12)+$months);

            if ($promoted  &gt; 1) { $suffix = 'Months ago'; }
            if ($promoted == 0) { $suffix = 'Month ago';  }
            if ($promoted  &lt; 1) { $suffix = 'ago'; $promoted = '&lt; 1'; }
            break;
    }
}


?