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

는 아니, 4 월 3에 해당 월의 첫 번째 월요일에서 시작되지 않습니다. – omerowitz

+0

나는 내 대답을 업데이트했다. –