Why does datetime->days always returns a positive number
You could use DateInterval::format
.
return $interval->format("%r%a");
Cast to int if needed:
return (int)$interval->format("%r%a");
If Date is in past then invert will 1.
If Date is in future then invert will 0.
$invert = $interval->invert;
Here is your answer:
$today = new DateTime();
$date = new DateTime('2013-03-10');
$interval = $today->diff($date);
echo $interval->format("%r%a");
Test it here