Отобразить все номера недели между двумя датами в PHP

Может кто-нибудь сказать, как отображать все номера недели, которые покрываются между двумя датами в PHP. Даты могут быть разного года.

ЕСЛИ я использую дату начала как «2011-09-16» и дату окончания как «2011-09-21», она покажет мне 37 и 38.

Вы могли бы использовать что-то вроде этого …

$startTime = strtotime('2011-12-12'); $endTime = strtotime('2012-02-01'); $weeks = array(); while ($startTime < $endTime) { $weeks[] = date('W', $startTime); $startTime += strtotime('+1 week', 0); } var_dump($weeks); 

CodePad .

Вывод

 array(8) { [0]=> string(2) "50" [1]=> string(2) "51" [2]=> string(2) "52" [3]=> string(2) "01" [4]=> string(2) "02" [5]=> string(2) "03" [6]=> string(2) "04" [7]=> string(2) "05" } 

Используя новый компонент datetime (PHP> = 5.3.0), вы можете использовать комбинацию DateTime , DateInterval и DatePeriod для получения итератора в течение всех недель в заданный промежуток времени.

 $p = new DatePeriod( new DateTime('2011-12-01'), new DateInterval('P1W'), new DateTime('2012-02-01') ); foreach ($p as $w) { var_dump($w->format('W')); } /* string(2) "48" string(2) "49" string(2) "50" string(2) "51" string(2) "52" string(2) "01" string(2) "02" string(2) "03" string(2) "04" */ 

используйте комбинацию date( 'W' ) и strtotime( '+1 week', $time ) в цикле