Reputation: 4111
I am trying to write a function that can count the number of days between 2 dates. I currently have the below but it is giving me some unexpected results:
function dayCount($from, $to) {
$first_date = strtotime($from);
$second_date = strtotime($to);
$offset = $second_date-$first_date;
return floor($offset/60/60/24);
}
print dayCount($s, $e).' Days';
A couple of correct examples:
$s = '18-03-2016';
$e = '25-03-2016';
Outputs: 7 Days
- correct
$s = '03-02-2016';
$e = '06-02-2016';
Outputs: 3 Days
- correct
$s = '06-04-2016';
$e = '27-04-2016';
Outputs: 21 Days
- correct
But when I have dates that cross over between 2 months sometimes it is correct, sometimes it shows a day less:
$s = '25-03-2016';
$e = '01-04-2016';
Outputs: 6 Days
- should be 7 Days
$s = '23-02-2016';
$e = '01-03-2016';
Outputs: 7 Days
- correct
Upvotes: 1
Views: 16557
Reputation: 440
You can also use this (for versions PHP 5.1.5 and above without using date_diff()):
function dayCount($from, $to) {
$first_date = strtotime($from);
$second_date = strtotime($to);
$days_diff = $second_date - $first_date;
return date('d',$days_diff);
}
print dayCount($s, $e).' Days';
Upvotes: 3
Reputation: 720
Please use diff
function for get days between two date.
$date1 = new DateTime("25-03-2016");
$date2 = new DateTime("01-04-2016");
echo $diff = $date2->diff($date1)->format("%a");
Upvotes: 10
Reputation: 420
please use date_diff function like this
<?php
$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
?>
hope this helps you thanx.
Upvotes: 6