2017-04-20 113 views
0

我試圖從PHP的Carbon庫中獲取一個月的所有周和週日。我想組成一個陣列,假設當前月,是這樣的:列出週一到週五的月份,從週一到週日碳

array(
    'April' => array(
     array(
      '2017-04-03', // Monday 
      '2017-04-04', // Tuesday 
      '2017-04-05', // Wednesday 
      '2017-04-06', // Thursday 
      '2017-04-07', // Friday 
      '2017-04-08', // Saturday 
      '2017-04-09', // Sunday 
     ), 

     array(
      '2017-04-10', // Monday 
      '2017-04-11', // Tuesday 
      '2017-04-12', // Wednesday 
      '2017-04-13', // Thursday 
      '2017-04-14', // Friday 
      '2017-04-15', // Saturday 
      '2017-04-16', // Sunday 
     ), 

     array(
      '2017-04-17', // Monday 
      '2017-04-18', // Tuesday 
      '2017-04-19', // Wednesday 
      '2017-04-20', // Thursday 
      '2017-04-21', // Friday 
      '2017-04-22', // Saturday 
      '2017-04-23', // Sunday 
     ), 

     array(
      '2017-04-24', // Monday 
      '2017-04-25', // Tuesday 
      '2017-04-26', // Wednesday 
      '2017-04-27', // Thursday 
      '2017-04-28', // Friday 
      '2017-04-29', // Saturday 
      '2017-04-30', // Sunday 
     ), 
    ), 
); 

我已經試過這樣:

for($i = 1; $i <= 4; $i++) { 
    $carbon = new Carbon(new Carbon('2017-04-03'), 'Europe/Sarajevo'); 
    $model[] = $carbon->addWeeks($i); 
} 

但因爲我沒有足夠我的需要手動設置日期。當然,我可以利用strtotime('First Monday of MonthName Year');的力量,但是這並不能幫助我找出一個邏輯來組成一個星期的陣列,而且正如我上面所描述的那樣。


編輯:基本上,我想是列出在特定月份開始從第一個星期一高達上週日,即所有星期。當前,並按照我上面描述的那樣將其組合成一個數組。

回答

0

你可以試試這個:

$month = "04"; 
$carbon = new Carbon(new Carbon(date('Y-m-d', strtotime('next monday', strtotime('2017-' . $month . '-01'))), 'Europe/Sarajevo'); 
$weeks_array = []; 

while (intval($carbon->month) == intval($month)){ 
    $week_array[$carbon->weekOfMonth][ $carbon->dayOfWeek ] = $carbon->toDateString(); 
    $carbon->addDay(); 
} 
+0

不,它不會從某月的第一個星期一,這對於四月是3日開始。 – omerowitz

+0

我更新了我的答案,我希望它可以幫助你 –

相關問題