2017-04-20 130 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

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

相关问题