如何在不同的一年中循环几周

时间:2016-05-18 11:54:50

标签: php

我的输入为$fromweek=50$fromyear=2015 然后$toweek=2$toyear=2016

如何在表格列中循环周数?

for ($i=$fromweek; $i<=$toweek; $i++) {            
    echo '<th>week '.$i.'</th>';
}

2 个答案:

答案 0 :(得分:2)

您可以使用周数和年份创建两个日期,并比较它们($date1超过$date2),并使用$date1按周增加DateInterval,请参阅示例下面:

$date1 = new DateTime();
$date1->setISODate(2015, 50);

$date2 = new DateTime();
$date2->setISODate(2016, 2);

while($date1 <= $date2) {
    echo $date1->format('W').PHP_EOL;
    $date1->add(new DateInterval('P1W'));
}

行动中:https://eval.in/573305

答案 1 :(得分:2)

根据ISO 8601标准,你需要在这里小心,有些年可以有53周。您的示例年2015 is one of these

\DateTime类是实现此目的的方法。它们将自动计算闰年等,并使日期操作更容易。值得花时间阅读它们。

这样的事情对你有用:

$fromweek=50;
$fromyear=2015;
$toweek=2;
$toyear=2016;
$interval = new DateInterval('P7D');

$start = (new \DateTime())->setISODate($fromyear, $fromweek);
$end = (new \DateTime())->setISODate($toyear, $toweek);

$period = new \DatePeriod($start, $interval, $end->add($interval));

foreach($period as $date){
    echo $date->format('d-m-Y') .  PHP_EOL;
}

See it working