date_diff() expects parameter 1 to be DateTimeInterface, string given

ShelðÔn Alag picture ShelðÔn Alag · Jul 7, 2014 · Viewed 60k times · Source

They have the same format:

$date_expire = '2014-08-06 00:00:00';
$date1 = date("Y-m-d G:i:s");
$date2 = date_create($date_expire);

$diff = date_diff($date1, $date2); //this line makes error.

But I am getting this error:

date_diff() expects parameter 1 to be DateTimeInterface, string given

Answer

Rikesh picture Rikesh · Jul 7, 2014

Because you are passing string whereas date_diff expects datetime object,

$date_expire = '2014-08-06 00:00:00';    
$date = new DateTime($date_expire);
$now = new DateTime();

echo $date->diff($now)->format("%d days, %h hours and %i minuts");

DEMO.