Divida los intervalos de fechas en las semanas correspondientes

Tengo intervalos de fechas desde y hacia. Deseo convertirlo a semanas. Supongamos que a partir de la fecha es 1-10-2014 y hasta la fecha es 31-10-2014

Entonces el resultado es:

1ra semana: 01-10-2014 al 04-10-2014 2 °: 05-102014 al 11-10-2014 3 °: 12-10-2014 al 18-10-2014 4 °: 19-10-2014 al 25-10- 2014 5to: 26-10-2014 al 31-10-2014

En php. Intento varios códigos pero eso no dio el resultado absoluto, solo dan 01 a 7, 8 a 14, etc. Pls ayuda.

Ya bash respuestas de

Get the date of one week from today with PHP in stack overflow date("Ymd",strtotime("+1 week")); 

Este fragmento usa el domingo como el primer día de la semana:

  $start = new DateTime('2014-10-01'); $end = new DateTime('2014-10-31 23:59'); $interval = new DateInterval('P1D'); $dateRange = new DatePeriod($start, $interval, $end); $weekNumber = 1; $weeks = array(); foreach ($dateRange as $date) { $weeks[$weekNumber][] = $date->format('Ym-d'); if ($date->format('w') == 6) { $weekNumber++; } } 

Cada semana tendrá todos los días en ella.

Si solo quiere el primer y último día de cada semana, puede usar array_shift y array_pop para obtenerlos. Por ejemplo, durante la primera semana puede usar:

  $wk1Start = array_shift($weeks[1]); //gives you first day of week 1 $wk1End = array_pop($weeks[1]); // give you the last day of week 1 

Si desea las fechas de inicio y finalización para cada semana, esta es una forma de hacerlo:

  $ranges = array_map(function($week) { return 'start: ' . array_shift($week) . ', end: ' . array_pop($week); }, $weeks); 

Este es el resultado de $ranges para mí:

  Array ( [1] => start: 2014-10-01, end: 2014-10-04 [2] => start: 2014-10-05, end: 2014-10-11 [3] => start: 2014-10-12, end: 2014-10-18 [4] => start: 2014-10-19, end: 2014-10-25 [5] => start: 2014-10-26, end: 2014-10-31 ) 

Tratar

 $start_date = date('Ym-d', strtotime('2014-10-01')); $end_date = date('Ym-d', strtotime('2014-10-31')); $i=1; for($date = $start_date; $date <= $end_date; $date = date('Ym-d', strtotime($date. ' + 7 days'))) { echo getWeekDates($date, $start_date, $end_date, $i); echo "\n"; $i++; } function getWeekDates($date, $start_date, $end_date, $i) { $week = date('W', strtotime($date)); $year = date('Y', strtotime($date)); $from = date("Ymd", strtotime("{$year}-W{$week}+1")); //Returns the date of monday in week if($from < $start_date) $from = $start_date; $to = date("Ymd", strtotime("{$year}-W{$week}-7")); //Returns the date of sunday in week if($to > $end_date) $to = $end_date; echo "$i th ".$from." to ".$to.'
'; }

salida: –

 1 th 2014-10-01 to 2014-10-05 2 th 2014-10-06 to 2014-10-12 3 th 2014-10-13 to 2014-10-19 4 th 2014-10-20 to 2014-10-26 5 th 2014-10-27 to 2014-10-31