Most of presented solutions seems to be working, but everyone forgets about one thing: time.
Taking evan example:
$datetime1 = strtotime('May 3, 2012 10:38:22 GMT');
$datetime2 = strtotime('06 Apr 2012 07:22:21 GMT');
$secs = $datetime2 - $datetime1;// == <seconds between the two times>
$days = $secs / 86400;
When you don't trim time part, what might lead to milscalculations. For example: Interval between 2014-05-01 14:00:00
(Y-m-d) and 2014-05-02 07:00:00
will be 0,xxx, not 1. You should trim time part of every date.
So it should be:
$datetime1 = strtotime(date('Y-m-d', strtotime('May 3, 2012 10:38:22 GMT')));
$datetime2 = strtotime(date('Y-m-d', strtotime('06 Apr 2012 07:22:21 GMT')));
$secs = $datetime2 - $datetime1;// == <seconds between the two times>
$days = $secs / 86400;