Possible Duplicate:
How to find number of days between two dates using php
I don't want to know HOW to do this. I want to know why it doesn't gives the expected result.
I try to calculate the number of days between two dates formatted as YYYY-mm-dd with this code :
$day1 = strtotime($_REQUEST['start']);
$day2 = strtotime($_REQUEST['end']);
$nbOfDays = $day2 - $day1;
$nbOfDays = ceil($nbOfDays/60/60/24);
echo $nbOfDays;
The problem is when I calculate the difference between 2012-12-01 and 2012-12-31 it gives me 30 days (should be 31) And the difference between 2012-11-01 and 2012-11-30 is also 30 (that is correct!)
Updated for pure informations:
I had to modify this code (thanks to Justin):
$day1 = new DateTime($_REQUEST['start']);
$day2 = new DateTime($_REQUEST['end']);
$interval = round(abs($day2->format('U') - $day1->format('U')) / (60*60*24));
echo $interval;
for :
$day1 = new DateTime($_REQUEST['start']);
$day2 = new DateTime($_REQUEST['end']);
$nb1 = $day2->format('U');
$nb2 = $day1->format('U');
$interval = round(abs($nb1 - $nb2) / (60*60*24));
echo $interval;
because
$day2->format('U') - $day1->format('U')
was equals to 0
So at the end, the difference between 2012-12-31 and 2012-12-01 was still 30. BUUUTTTT, the difference between 2012-11-30 and 2012-11-01 was 29, so
echo $interval +1;
Gives the correct number of days in any case!