我的输入为$fromweek=50
和$fromyear=2015
然后$toweek=2
和$toyear=2016
如何在表格列中循环周数?
for ($i=$fromweek; $i<=$toweek; $i++) {
echo '<th>week '.$i.'</th>';
}
答案 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'));
}
答案 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;
}