2016-01-19 7 views
2

Я хочу получить все четверги года, используя Carbon, и сохранить его в DB.Как получить четверги года с использованием углерода

До сих пор я мог хранить только четверги текущего месяца. пожалуйста, посоветуйте мне, как сделать это в течение всего года один раз.

Текущий код:

public function getThursdays() 
{ 
    return new \DatePeriod(
     Carbon::parse("first thursday of this month"), 
     CarbonInterval::week(), 
     Carbon::parse("first thursday of next month") 
    ); 
} 

public function handle() 
{ 

    $thursdays = $this->getThursdays(); 

    foreach ($thursdays as $thursday) 
    { 
     $Weeks = new Week(); 
     $Weeks->week_starting_date = $thursday; 
     $Weeks->save(); 
    } 
} 

ответ

1

Вы можете получить количество недель в году, во-первых, используя WEEKS_PER_YEAR, например:

$weeks_per_year = Carbon::WEEKS_PER_YEAR; 

После этого получить первый четверг года с использованием:

$first_thursday = Carbon::parse("first thursday of this year"); 

Затем проведите через Л.Л. недели добавляя каждый раз, когда одна неделя с помощью функции Carbon addWeeks (1) получить четверг на следующей неделе и так:

for($i=1;$i<$weeks_per_year;$i++) 
{ 
    array_push($thursdays, $first_thursday->addWeeks(1)->toDateString()); 
} 

ПОЛНЫЙ код:

$weeks_per_year = Carbon::WEEKS_PER_YEAR; 
$first_thursday = Carbon::parse("first thursday of this year"); 

$thursdays = [$first_thursday->toDateString()]; 

for($i=1;$i<$weeks_per_year;$i++) 
{ 
    array_push($thursdays, $first_thursday->addWeeks(1)->toDateString()); 
} 

Выход:

Массив круглогодичного года в следующем формате yyyy-mm-dd:

["2016-01-07","2016-01-14","2016-01-21", ... ,"2016-12-29"] 

Или вы можете хранить даты в вас, относящихся непосредственно DB вместо возвращения массива, как:

for($i=1; $i<$weeks_per_year;$i++){ 
    $Weeks = new Week(); 
    $Weeks->week_starting_date = $first_thursday->addWeeks(1)->toDateString(); 
    $Weeks->save(); 
} 

Надеется, что это помогает.

 Смежные вопросы

  • Нет связанных вопросов^_^