1

I've always used the code below to calculate the difference (in days) between two dates. But I'm wondering if there is something more intelligent, someone knows a better way to do this?

//86400 one day
$data1 = '2013-07-24 21:30:00';
$data2 = '2013-08-24 21:30:00';

$diff =  (abs(strtotime($data1) - strtotime($data2))) / 86400;

var_dump($diff);
John Conde
  • 217,595
  • 99
  • 455
  • 496
Renato
  • 345
  • 1
  • 5
  • 14

1 Answers1

6

You can use DateTime:diff:

$data1 = new DateTime('2013-07-24 21:30:00');
$data2= new DateTime('2013-08-24 21:30:00');
$interval = $data1->diff($data2);
echo $interval->format('%R%a days');

You can also use DateTime::createFromFormat for better result in case that your input date has different format, for example:

$date1 = DateTime::createFromFormat('Y-m-d H:i:s', '2013-07-24 21:30:00');
$date2 = DateTime::createFromFormat('Y-m-d H:i:s', '2013-08-24 21:30:00');
$interval = $date1->diff($date2);
echo $interval->format('%R%a days');