PHP函数在开始日期和结束日期之间获取天数

时间:2015-10-23 12:48:58

标签: php date

我有以下PHP函数,它应返回两个日期之间的日期。 由于某些原因,有一天总是重复。

0 ≤ q < q+1 ≤ p

结果是:

$plusOneWeek = date("Y-m-d",strtotime("+1 week"));
$dates = getDates(date("Y-m-d"), $plusOneWeek);

function getDates($startTime, $endTime) {
    $day = 86400;
    $format = 'Y-m-d';
    $startTime = strtotime($startTime);
    $endTime = strtotime($endTime);
    //$numDays = round(($endTime - $startTime) / $day) + 1;
    $numDays = round(($endTime - $startTime) / $day); // remove increment

    $days = array();

    for ($i = 0; $i < $numDays; $i++) { //change $i to 1
        $addDay = date($format, ($startTime + ($i * $day)));
        $days[] = $addDay;
    }

    return $days;
}

如您所见,这个日期Array ( [0] => 2015-10-23 [1] => 2015-10-24 [2] => 2015-10-25 [3] => 2015-10-25 [4] => 2015-10-26 [5] => 2015-10-27 [6] => 2015-10-28 ) 有两次。我不明白为什么。

1 个答案:

答案 0 :(得分:2)

如果我运行你的代码我没有重复,但无论如何我会完全避免round()方法(它也更短)。

function getDates($startTime, $endTime){
    $days = array();
    $currentDay = $startTime;
    do {
      $days[] = $currentDay;
      $currentDay = date('Y-m-d', strtotime($currentDay .' +1 day'));          
    } while ($currentDay < $endTime);
    return $days;
}

(可以随意添加一些错误处理,例如$endTime < $startTime等等)