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

8

有人能告诉我如何在PHP中显示两个日期之间所涵盖的所有周数吗?这些日期可能是不同年份的。

例如,如果我使用开始日期“2011-09-16”和结束日期“2011-09-21”,它将显示第37和38周。


2
你目前尝试过什么了吗? - Bojangles
1
(参考) http://php.net/manual/zh/class.dateperiod.php - Gordon
2
这个问题被标记为重复。我认为这些问题并不重复,因为这个问题关注的是周数,而另一个问题关注的是在一个时间段内的日期。 - Kristoffer Bohmann
3个回答

13

您可以使用类似于以下内容的方法...

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

12
使用新的日期时间组件(PHP >= 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"
*/

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接