Search code examples
phpdatetimephp-5.3

Strange PHP 5.3 issue with date diff calculating difference in days


I am experiencing a rather strange problem using PHP 5.3's date diff function to calculate the difference in days between two dates. Below is my code:

$currentDate = new DateTime(); // (today's date is 2012-1-27)
$startDate = new DateTime('2012-04-01');

$diff = $startDate->diff($currentDate);

$daysBefore = $diff->d;

echo $daysBefore; 

The above code displays 4 as the value of the $daysBefore variable.

Why is PHP displaying a difference of 4 days between the dates 27th Jan 2012 and 1st April 2012, when clearly there are many more days between these dates.

Am I doing something wrong?


Solution

  • DateInterval::$d is the days part of the interval, not the total number of days of the difference. For that, you want DateInterval::$days, so:

    $daysBefore = $diff->days;