Why not just use a DateInterval:
$dts = new DateTime('05-11-2012 23:15:00');
$dte = new DateTime('06-11-2012 01:15:00');
$di = $dte->diff($dts, true);
The object properties can be inspected as well to see what to show. If its <> 0, then its different in some way shape or form, so you can tack on things like years and months systematically this way.