2017-01-30 7 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-in-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'); 
}