Possible duplicate:
How to find the number of days between two dates using php
I do not want to know HOW to do this. I want to know why this does not produce the expected result.
I am trying 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 ( it is right!)
Updated for clean info:
I had to change this code (thanks 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 0
So, at the end, the difference between 2012-12-31 and 2012-12-01 was another 30. BUUUTTTT, the difference between 2012-11-30 and 2012-11-01 was 29, so
echo $interval +1;
Gives the correct number of days anyway!
source share