2015-08-25 50 views
0

我可以對下面的代碼應用哪些更改,以便包括範圍內的所有日期,而不是除最後一個日期以外的所有日期。目前如果選擇的日期是:01-05-2015和04-05-2015 - > 結果是: 01-05-2015,02-05-2015,03-05-2015,而期望的結果是:01- 05-2015,02-05-2015,03-05-2015,04-05-2015。編輯代碼還包括所選的最後一個日期

function daterange($booking_from, $booking_to, $step = '+1 day', $output_format = 'Y-m-d') { 
    $dates = array(); 
    $first = new DateTime($booking_from); 
    $last = new DateTime($booking_to); 
    $interval = DateInterval::createFromDateString($step); 
    $period = new DatePeriod($first, $interval, $last); 

    foreach ($period as $date) { 
     $dates[] = $date->format($output_format); 
    } 

    return $dates; 
} 

$dates = daterange($booking_from, $booking_to); 
+1

http://stackoverflow.com/questions/21282322/php-dateperiod-does-not-return-2-days-as-expected –

+0

已經試過了一個昨天沒有工作。 :)但無論如何感謝。 – Christa

回答

1

http://php.net/manual/en/class.dateperiod.php#109846,加上最後日期修改。

function daterange($booking_from, $booking_to, $step = '+1 day', $output_format = 'Y-m-d') { 
    $dates = array(); 
    $first = new DateTime($booking_from); 
    $last = new DateTime($booking_to); 
    $last = $last->modify('+1 day'); 
    $interval = DateInterval::createFromDateString($step); 
    $period = new DatePeriod($first, $interval, $last); 

    foreach ($period as $date) { 
     $dates[] = $date->format($output_format); 
    } 

    return $dates; 
} 

$dates = daterange('01-05-2015', '04-05-2015'); 
相關問題