显示PHP中两个日期之间的所有周数

时间:2011-09-21 07:17:38

标签: php

任何人都可以告诉我们如何显示PHP中两个日期之间涵盖的所有周数。日期可能是不同年份。

如果我使用的开始日期为“2011-09-16”,结束日期为“2011-09-21”,则会显示第37周和第38周。

3 个答案:

答案 0 :(得分:10)

你可以使用这样的东西......

$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"
}

答案 1 :(得分:6)

使用新的日期时间组件(PHP&gt; = 5.3.0),您可以使用DateTimeDateIntervalDatePeriod的组合来获取给定的所有星期的迭代器时间跨度。

$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"
*/

答案 2 :(得分:0)

在循环中使用date( 'W' )strtotime( '+1 week', $time )的组合