Не используйте date
для операций, оно предназначено для отображения дат. Вместо этого вычтите 2 отметки времени:
...
$date = mktime(now...);
$target = mktime(0,0,0,12,8,2011);
echo date($format, $target - $date);
Но вы должны понимать, что временные метки начинаются в 1970 году и заканчиваются в 2038 году, поэтому, например, 2011 - 2007 = 1974.
Более подходящим в вашем случае будет date_diff
, как @Kerrek SB предложил в комментарии.
Пример (с php.net):
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days'); // +2 days