2017-01-30 92 views
1

我使用這個函數來獲取兩個日期之間的所有星期五:如何獲得日期範圍內所有的星期五由碳

public function getFridaysInRange($dateFromString, $dateToString) 
{ 
    $dateFrom = new \DateTime($dateFromString); 
    $dateTo = new \DateTime($dateToString); 
    $dates = []; 

    if ($dateFrom > $dateTo) { 
     return $dates; 
    } 

    if (1 != $dateFrom->format('N')) { 
     $dateFrom->modify('next friday'); 
    } 

    while ($dateFrom <= $dateTo) { 
     $dates[] = $dateFrom->format('Y-m-d'); 
     $dateFrom->modify('+1 week'); 
    } 

    return $dates; 
} 

$this->getFridaysInRange('2017-01-01','2017-01-30'); 

結果:

array:4 [▼ 
    0 => "2017-01-06" 
    1 => "2017-01-13" 
    2 => "2017-01-20" 
    3 => "2017-01-27" 
] 

是否有任何carbon之類的函數以上?

+0

不是一個真正的碳,而且可悲的是連週五,但你可能發現它有用:http://stackoverflow.com/questions/ 7061802/php-function-for-get-all-mondays-within-date-range –

+0

無論如何翻閱http://carbon.nesbot.com/docs/我不認爲有這樣的功能,就像你的一樣: ) –

回答

1

可以使用碳所有的力量是這樣的:

$fridays = []; 
$startDate = Carbon::parse($fromDate)->next(Carbon::FRIDAY); // Get the first friday. 
$endDate = Carbon::parse($toDate); 

for ($date = $startDate; $date->lte($endDate); $date->addWeek()) { 
    $fridays[] = $date->format('Y-m-d'); 
} 
相關問題