PHP - Count number of days between 2 dates

2020-04-21 07:20发布

问题:

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

回答1:

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");


回答2:

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.



回答3:

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';


标签: php date count