我正在尝试构建一个图表来显示学生的进步,仅将最后几周(星期一)显示为 m/d。 这是我尝试过的:
$here = date( 'W', strtotime('this Monday'));
$then = date('W', strtotime('-70 days', strtotime('this Monday')));
for($i = $then; $i<=$here; $i++)
{
$temp = date('W', strtotime($i));
$tempa = strtotime($temp);
$newd = date('m/d', $tempa);
list .=",".$newd);
}
当前的迭代为我提供了一系列 01/01。 有人可以帮忙吗? 谢谢。
最佳答案
您可以使用 PHP 的 DateTime类。
<?php
$nextMonday = new \DateTime(date('Y-m-d') . ' previous Monday');
echo "<br/>" . $nextMonday->format('Y-m-d');
for ($i=1 ; $i<=9 ; ++$i) {
$nextMonday->sub(new DateInterval('P7D'));
echo "<br/>" . $nextMonday->format('Y-m-d');
}
输出:
2019-04-22
2019-04-15
2019-04-08
2019-04-01
2019-03-25
2019-03-18
2019-03-11
2019-03-04
2019-02-25
2019-02-18
代码解释:
首先获取前一个星期一。
现在,添加 1 到 9 的循环(我们已经有了最近的星期一)。
在循环中,将日期减去 7 天(P -> Period,7D -> 7 Days)
这样,我们就可以只跳转到星期一,并且(星期一到星期一)相差 7 天。
它将打印最后 10 个星期一(循环前 1 个和循环后 9 个)。
关于php - 循环生成从今天开始的最后十个星期一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55826509/